Mon problème a commencé avec le fait que je ne puisse plus me connecter en tant que root sur mon installation mysql. J'essayais d'exécuter mysql sans mot de passe activé ... mais chaque fois que j'exécutais la commande
# mysqld_safe --skip-grant-tables &
Je ne récupérerais jamais l'invite. J'essayais de suivre ces instructions pour récupérer le mot de passe .
L'écran ressemble à ceci:
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
et je ne reçois pas d'invite pour commencer à taper les commandes SQL pour réinitialiser le mot de passe.
Quand je le tue en appuyant sur CTRL + C, Je reçois le message suivant:
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Si je réessaie la commande et la laisse suffisamment longue, la série de messages suivante est générée:
root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#
Mais alors si j'essaie de me connecter en tant que root en faisant:
# mysql -u root
Je reçois le message d'erreur suivant:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
J'ai vérifié et le fichier /var/run/mysqld/mysqld.sock
n'existe pas. Le dossier fait, mais pas le fichier.
De plus, je ne sais pas si cela aide ou non, mais j'ai lancé find / -name mysqld
et il est venu avec:
/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder
Je suis nouveau sur Linux et MySQL, donc je ne sais pas si c'est normal ou non. Mais j'inclus cette information au cas où cela aiderait.
J'ai finalement décidé de désinstaller et de réinstaller mysql.
apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin
Après avoir réinstallé tous les paquets à nouveau dans le même ordre que ci-dessus, lors de l'installation de phpmyadmin, j'ai eu la même erreur:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
J'ai donc essayé à nouveau de désinstaller/réinstaller. Cette fois, après avoir désinstallé les paquetages, j'ai également renommé manuellement tous les fichiers et répertoires mysql en mysql.bad
à leurs emplacements respectifs.
/var/lib/mysql
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/Perl5/DBD/mysql
/usr/lib/Perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql
Ensuite, j'ai essayé de réinstaller mysql-server
et mysql-client
. Mais j'ai remarqué que cela ne me demande pas un mot de passe. N'est-il pas supposé demander un mot de passe administrateur?
Pour trouver tous les fichiers de socket sur votre système, exécutez:
Sudo find / -type s
Le système de mon serveur Mysql avait le socket ouvert à /var/lib/mysql/mysql.sock
Une fois que vous avez trouvé où ouvrir le socket, ajoutez ou modifiez la ligne dans votre fichier /etc/my.cnf avec le chemin d'accès au fichier de socket:
socket=/var/lib/mysql/mysql.sock
Parfois, le script de démarrage du système qui a lancé l'exécutable de ligne de commande spécifie un indicateur --socket=path
. Cet indicateur peut remplacer l’emplacement my.cnf et il en résulterait qu’un socket n’est pas trouvé là où le fichier my.cnf indique qu’il devrait l'être. Ensuite, lorsque vous essayez d’exécuter le client en ligne de commande mysql, il lit le fichier my.cnf pour rechercher le socket, mais ne le trouvera pas car il diffère de celui où le serveur en a créé un. Donc, à moins que vous ne vous préoccupiez de l'emplacement du socket, il suffit de changer le fichier my.cnf pour qu'il corresponde.
Ensuite, arrêtez le processus mysqld. La façon dont vous faites cela variera selon le système.
Si vous êtes un super utilisateur du système Linux, essayez l’une des méthodes suivantes si vous ne connaissez pas la méthode spécifique utilisée par votre configuration Mysql:
service mysqld stop
/etc/init.d/mysqld stop
mysqladmin -u root -p shutdown
pkill -9 mysqld
pgrep mysql
ou ps aux | grep mysql | grep -v grep
4969
, terminer par kill -9 4969
Cela fait, vous voudrez peut-être rechercher un fichier pid dans /var/run/mysqld/
et le supprimer.
Assurez-vous que les permissions sur votre socket sont telles que tout utilisateur que mysqld est en train de lancer puisse le lire/écrire. Un test simple consiste à l’ouvrir en lecture/écriture et à voir s’il fonctionne toujours:
chmod 777 /var/run/mysqld/mysqld.sock
Si le problème est résolu, vous pouvez personnaliser les autorisations et la propriété du socket en fonction de vos paramètres de sécurité.
De plus, le répertoire dans lequel se trouve le socket doit être accessible par l'utilisateur qui exécute le processus mysqld.
Essayez cette commande,
Sudo service mysql start
Cette erreur est due à plusieurs installations de mysql. Exécutez la commande:
ps -A|grep mysql
Tuez le processus en utilisant:
Sudo pkill mysql
puis exécutez la commande:
ps -A|grep mysqld
Aussi, tuez ce processus en lançant:
Sudo pkill mysqld
Maintenant que vous êtes complètement configuré, exécutez les commandes suivantes:
service mysql restart
mysql -u root -p
J'ai de nouveau très bien travaillé avec MySQL
La solution est beaucoup plus facile.
mysql.sock
. Dans mon cas c'était en /opt/lampp/var/mysql/mysql.sock
Sudo Nautilus
mysql.sock
. mysqld.sock
puis cliquez sur le fichier avec le bouton droit de la souris et Couper le/var/run
et créez un dossier appelé mysqld
et entrez-lemysqld.sock
à /var/run/mysqld/mysqld.sock
:)Il suffit de démarrer le service MySQL après l’installation:
Pour Ubuntu:
Sudo service mysql start;
Pour CentOS ou RHEL:
Sudo service mysqld start;
Ok, il suffit de copier et coller ces codes: Ceci devrait être fait dans le terminal, à l'intérieur d'un serveur, lorsque votre base de données mysql n'est pas correctement installée, et lorsque vous obtenez cette erreur: "Impossible de se connecter au serveur MySQL local via socket" var/run/mysqld/mysqld.sock '(2)'.
Stop MySql
Sudo /etc/init.d/mysqld stop
Redémarrez ou démarrez
Sudo /etc/init.d/mysqld restart or Sudo /etc/init.d/mysqld start
Faites un lien comme celui-ci et donnez-le au système
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
Exécutez une installation sécurisée qui guide tout le processus à suivre pour configurer mysql
/usr/bin/mysql_secure_installation
Il existe un bogue sur Ubuntu avec MySQL 5.6 et 5.7 où var/run/mysqld/
disparaîtrait à chaque fois que le service MySQL s’arrête ou est redémarré. Cela empêche l'exécution de MySQL. Vous avez trouvé cette solution de contournement, qui n'est pas parfaite, mais au moins, elle s'exécute après l'arrêt/le redémarrage:
mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
J'ai fait face à la même erreur et j'ai constaté que c'était dû à la mise à niveau des paquets. Donc, après avoir redémarré mon système, j'ai résolu l'erreur.
Je pense qu'en raison de la mise à jour des bibliothèques/paquets SQL, une erreur s'est produite. Essayez ceci si vous effectuez une mise à niveau :)
Il y a plusieurs raisons à ce problème, mais parfois il suffit de redémarrer le serveur mysql pour résoudre le problème
Sudo service mysql restart
solutions
enfin désinstaller et réinstaller mysql. **
puis installez à nouveau par
Après cette opération, 164 Mo d’espace disque supplémentaire seront utilisés.
......
Enfin, vous obtiendrez ces lignes ....
Mise en place de libhtml-template-Perl (2.95-1) ...
Configuration de mysql-common-5.6 (5.6.16-1 ~ exp1) ... Traitement des déclencheurs pour libc-bin (2.19-0ubuntu6) Traitement des déclencheurs pour ureadahead (0.100.0-16) ...
Et alors
root @ ubuntu1404: ~ # mysql -u root -p (pour chaque mot de passe utilisé en premier par u devrait être utilisé)
Entrer le mot de passe:
Remarque: le mot de passe entré doit être identique à l'heure d'installation Mot de passe de mysql (comme .root, system, admin, rahul etc ...)
Puis tapez
USE rahul_db (nom de la base de données);
Merci.**
La réponse de l'étape de chargement de l'utilisateur a fonctionné pour moi . Il est parfois nécessaire de modifier le fichier dans /etc/mysql/my.cnf
[client]
password = your_mysql_root_password
port = 3306
Host = 127.0.0.1
socket = /var/lib/mysql/mysql.sock
Utiliser XAMPP sur Ubuntu:
Créez un dossier appelé mysqld inside/var/run directory. Vous pouvez accomplir cela en utilisant la commande Sudo mkdir /var/run/mysqld
.
Créez un lien symbolique vers mysql.sock fichier créé par le serveur XAMPP lors de son démarrage. Vous pouvez utiliser la commande Sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock
.
Remarque: Le fichier mysql.sock est créé au démarrage du serveur et supprimé à l’arrêt du serveur. Le lien que vous avez créé peut parfois sembler rompu, mais il doit fonctionner tant que vous avez a démarré le serveur en utilisant
Sudo /opt/lampp/lampp start
ou tout autre moyen.
Bonne chance! J'espère que vous vous en tirerez cette fois.
Peut-être que quelqu'un face à ce problème. J'utilise Mysql Workbench on Ubuntu 14 et j'ai cette erreur.
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect
Recherchez votre fichier de socket en exécutant Sudo find / -type s
, dans mon cas, il s'agissait de /run/mysqld/mysqld.sock
Donc, je viens de créer un lien vers ce fichier dans le répertoire tmp
.
Sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
Cela a déjà été mentionné plusieurs fois, mais cela a immédiatement fonctionné pour moi:
service mysql redémarrer
vous pouvez trouver mysqld.sock
dans /var/run/mysqld
si vous avez déjà installé mysql-server
par Sudo apt-get install mysql-server
Je viens d'avoir ce problème sur Ubuntu 14.10
Le mysql-server
n'est plus installé (il a en quelque sorte été supprimé), mais je ne pouvais pas simplement l'installer car il y avait des paquets cassés et des problèmes/conflits de dépendance.
En fin de compte, j'ai dû réinstaller mysql
Sudo apt-get remove mysql-client
Sudo apt-get install mysql-server
J'ai désinstallé mysql sous Ubuntu 16.04 https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql
J'ai réinstallé mysql https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04
Cela semblait fonctionner.
Dans mon cas, deux processus mysqld étaient en cours d'exécution .. Ont tué le processus facultatif en utilisant Pkill -9 mysqld
Je pense que votre serveur MySQL n'a pas encore démarré. Donc, démarrez le serveur en utilisant l’une des commandes suivantes.
#services mysql start
ou
#/etc/init.d/mysql start
Si vous avez beaucoup de bases de données et de tables sur votre système et que vous avez défini innodb_file_per_table
dans my.cnf, votre serveur mysql risque de manquer d’objets/fichiers ouverts (ou plutôt des descripteurs de ces objets). un nouveau nombre maximum avec
open-files-limit = 2048
et redémarrez mysql . Cette approche peut aider lorsque le socket n’est pas créé du tout, mais ce n’est peut-être pas le vrai problème, il existe un problème sous-jacent.
J'exécute MySQL sur une machine virtuelle sous Ubuntu. Donc, ce qui s'est passé est le moment où j'ai redémarré mon hôte et la machine virtuelle. L'adresse IP a changé. J'avais configuré mysql pour fonctionner sur IP 192.168.0.5 et maintenant, en raison de l'allocation dynamique d'IP, mon nouvel IP était 192.168.0.8
Si vous rencontrez le même problème, vérifiez simplement votre adresse IP avec la commande ifconfig
.
Vérifiez votre liaison MySQL avec la commande cat /etc/mysql/my.cnf | grep bind-address
Si les deux adresses IP sont identiques, réinstallez votre serveur mysql
Sinon, changez votre adresse IP dans /etc/network/interfaces
en utilisant nano, vi, vim ou tout ce que vous préférez.
Je préfère Sudo nano /etc/network/interfaces
et entrez les informations suivantes
auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0
Enregistrez le fichier d'interface, redémarrez votre interface Sudo ifdown eth0
&& Sudo ifup eth0
et remplacez "eth0" par votre interface réseau
Redémarrez MySQL Sudo service mysql stop
suivi de Sudo service mysql start
Si vous avez le même problème que le mien, vous êtes prêt à partir!
Changer Host
en 127.0.0.1
a fonctionné pour moi.
Editez le fichier dans /etc/mysql/my.cnf
et ajoutez la ligne mentionnée ci-dessous à la section: client
[client]
port = 3306
Host = 127.0.0.1
socket = /var/lib/mysql/mysql.sock
Après que vous avez fini avec ça. Exécutez la commande suivante.
Sudo service mysql start
J'ai eu le même problème avec un CentOS VPS. Si MySQL ne démarre pas ou continue à planter juste après, essayez ces étapes:
1) Recherchez le fichier my.cnf (le mien se trouvait dans /etc/my.cnf) et ajoutez la ligne suivante:
innodb_force_recovery = X
en remplaçant X par un nombre compris entre 1 et 6, en commençant par 1, puis en incrémentant si MySQL ne démarre pas. Définir sur 4, 5 ou 6 peut supprimer vos données, soyez donc prudent et lisez http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html before.
2) Redémarrez le service MySQL. Seul SELECT fonctionnera et c'est normal à ce stade.
3) Dumpez toutes vos bases de données/schémas avec mysqldump un par un, ne compressez pas les dumps, car il vous faudrait quand même les décompresser plus tard.
4) Déplacez (ou supprimez!) Uniquement les répertoires de bd à l'intérieur de/var/lib/mysql, en conservant les fichiers individuels à la racine.
5) Arrêtez MySQL puis décommentez la ligne ajoutée en 1). Démarrez MySQL.
6) Récupérer tous les disques stockés en 3).
Bonne chance!
Assurez-vous que le chemin d'accès au fichier de socket inaccessible est identique à '/var/run/mysqld/mysqld.sock', sinon changez le chemin tel que le vôtre. Arrêtez le mysqld
$ Sudo /etc/init.d/mysqld stop
Si le processus est toujours en cours d'exécution;
$ Sudo pkill -9 mysqld
Supprimez le répertoire mysql où le socket va créer. Pour moi, il n’était pas permis de le retirer, alors j’ai dû le retirer avec force.
$ Sudo mkdir -p /var/run/mysqld
Définir la propriété dans le répertoire
$ Sudo chown mysql:mysql /var/run/mysqld
Démarrer mysql
$ Sudo /etc/init.d/mysql start
Essayer de connecter mysql
$ Sudo mysql -u dbuser -p
Je voudrais aussi vérifier la configuration de MySQL. Je rencontrais ce problème avec mon propre serveur, mais j’étais un peu trop pressé et j’ai mal configuré l’innodb_buffer_pool_size pour ma machine.
innodb_buffer_pool_size = 4096M
Il fonctionne généralement bien jusqu'en 2048 mais je suppose que je n'ai pas la mémoire nécessaire pour supporter 4 concerts.
J'imagine que cela pourrait également se produire avec d'autres paramètres de configuration mysql.
Parfois, c'est simplement que vous n'avez pas assez d'espace sur le serveur, libérez de l'espace (par exemple, en effaçant les fichiers journaux) et démarrez mysql:
/etc/init.d/mysql start
J'utilise XAMPP sur Ubuntu. J'ai trouvé cette erreur lors de la connexion à la base de données via un terminal. Je le résous sans aucune configuration car le chemin du fichier de socket par défaut dans XAMPP est écrit dans "/opt/lampp/etc/my.cnf" comme suit:
[client]
#password = your_password
port = 3306
socket = /opt/lampp/var/mysql/mysql.sock
maintenant vous pouvez vous connecter simplement en donnant ce paramètre de chemin de socket avec la commande mysql sur le terminal, comme:
mysql -u root --socket /opt/lampp/var/mysql/mysql.sock
et c'est fait sans aucune configuration.
Si vous ne voulez pas taper le chemin de socket à chaque fois, alors changez le chemin par défaut dans my.cnf par "/var/run/mysqld/mysqld.sock". Fournissez des autorisations et redémarrez le serveur mysql.
Commencez par créer dir/var/run/mysqld
avec commande:
mkdir -p /var/run/mysqld
puis ajouter des droits au répertoire
chown mysql:mysql /var/run/mysqld
après cet essai
mysql -u root
Dans mon cas, le problème était l'adresse de liaison dans /etc/mysql/my.cnf, puis:
nano /etc/mysql/my.cnf
rechercher des adresses de liaison et supprimer les informations spécifiques avec l'adresse IP de l'hôte (pas l'adresse 127.0.0.1)
J'ai eu ce type de problème lorsque j'ai redimensionné le droplet sur digitalocean. J'avais mis à jour la version de MySQL et travaille pour moi. Voici le tutoriel que j'ai appliqué - https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html
Essayez ce qui suit à l’invite du terminal:
Sudo mysql
Une fois que cela vous permet d'entrer, vous pouvez créer un nouvel utilisateur et attribuer les privilèges que vous souhaitez sur la base de données spécifique à laquelle ils ont besoin d'accéder.
Mysql 5.7 a changé certaines choses et utilise par défaut le plugin auth_socket (par opposition à mysql_native_password) pour root afin d'éviter que le compte ne soit piraté. Vous pouvez remplacer ceci en définissant le champ du plugin pour root, mais à moins que vous n'ayez une très bonne raison, vous ne devriez probablement pas contourner la protection. Surtout quand Sudo mysql
est plus facile que mysql -u root -p
de toute façon.
J'ai découvert cette information - de tous les endroits - d'un Raspberry Pi site d'aide. Travaillé comme un charme après que Lubuntu 18.04 m'ait énervé pendant deux heures.
J'ai eu exactement le même problème. Après avoir lutté pendant une heure, j'ai trouvé un moyen de le corriger sans réinstaller mysql-common, mysql-client, mysql-server.
Tout d’abord, allez dans "/ var/run/mysqld". Vous constaterez que le mysql.sock n'existe pas. Supprimez simplement tout le répertoire mysqld, recréez-le et donnez-lui les privilèges nécessaires.
# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/
Maintenant, tuez le processus mysql dans son intégralité. Il est possible que la commande "/etc/init.d/mysql status" soit affichée "en attente du nettoyeur de page" même après l'arrêt du service.
Pour fermer complètement le service, utilisez
# pkill -9 mysqld
Une fois le processus tué, essayez de le redémarrer en utilisant
# /etc/init.d/mysql start
Et vous verrez que ça marche bien! Et aussi il n'y aura pas de problème à l'arrêter aussi.
Le fichier mysql.sock est créé au démarrage de MariaDB et est supprimé lorsque MariaDB est arrêté. Cela n’existera pas si MariaDB n’est pas lancé . Peut-être n’avez-vous pas installé MariaDB . VOUS POURRIEZ SUIVRE L’INSTRUCTION SUIVANTE: https://www.linode.com/docs/databases/mariadb/comment-installer-mariadb-on-centos-7 BEST
J'ai essayé presque toutes les solutions listées, aucune ne fonctionnait pour moi jusqu'à ce que je redémarre la machine, puis le serveur mysql a redémarré lorsque j'ai lancé la commande "service mysql restart".
sur archlinux, j'ai rencontré cette erreur et le problème était que le service mysqld
- n'était pas en cours d'exécution.
Cependant, je ne pouvais pas activer le service mysql avec systemctl start mysqld
comme indiqué dans la documentation Archlinux. Je pense que l'erreur était quelque chose comme
mysqld.service introuvable
J'ai d'abord dû redémarrer le système.
Ensuite, j'ai à nouveau saisi la commande (et entré systemctl enable mysqld
) et maintenant mysql
était capable de trouver le mysql.sock
créé.
Ma solution;
Ubuntu 18.04 (WSL)
/ etc/mysql/my.cnf
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
/ etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
J'ai changé le port. Cela a fonctionné pour moi. Vous pouvez écrire un autre port. Exemple 3355