Pour trouver tous les fichiers socket sur votre système, exécutez :
sudo find / -type s
Mon système de serveur Mysql avait le socket ouvert à /var/lib/mysql/mysql.sock
Une fois que vous avez trouvé l'endroit où le socket est ouvert, 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 la ligne de commande spécifie un drapeau --socket=path
. Ce drapeau peut remplacer l'option my.cnf
et cela aurait pour conséquence qu'un socket ne serait pas trouvé là où le fichier my.cnf indique qu'il devrait être. Ensuite, lorsque vous essayez d'exécuter le client de ligne de commande mysql, il lira my.cnf pour trouver le socket, mais il ne le trouvera pas puisqu'il s'écarte de l'endroit où le serveur en a créé un. Donc, à moins que vous ne vous souciiez de l'endroit où se trouve le socket, le simple fait de changer le my.cnf pour qu'il corresponde devrait fonctionner.
Si vous êtes un super utilisateur du système Linux, sur la base de ce qui précède, faites simplement ceci :
kill -9 <pid_of_mysql>
ou parfois vous pouvez faire ça :
pkill -9 mysqld
Après avoir fait cela, vous pouvez chercher un fichier pid dans le dossier /var/run/mysqld/
et le supprimer
Assurez-vous que les permissions sur votre socket sont telles que l'utilisateur sous lequel mysqld est exécuté peut lire/écrire dessus. Un test facile est de l'ouvrir en lecture/écriture complète et de voir si cela fonctionne toujours :
chmod 777 '/var/run/mysqld/mysqld.sock'
Si cela résout le problème, vous pouvez adapter les autorisations et la propriété du socket en fonction de vos paramètres de sécurité.
De plus, le répertoire dans lequel réside le socket doit être accessible par l'utilisateur qui exécute le processus mysqld.
Référence : https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq