Erreur "Can't connect to local MySQL server through socket"
De wikiGite
Si cette erreur apparaît évidemment quand Mysql n'est pas lancé sur la machine linux, elle peut se produire pour d'autres raisons :
- Le fichier socket n'est pas à l'endroit attendu
Le fichier peut être créé au lancement de MySQL soit dans /tmp, ou /var/lib/mysql/mysql.sock, ou (comme sur Debian Squeeze) dans /var/run/mysqld/mysqld.sock, ou ailleurs.
Si le client mysql local ne le trouve pas, on peut forcer le chemin sur la ligne de commande par
mysql --socket-path=/var/run/mysqld/mysqld.sock ou mysql -S /var/run/mysqld/mysqld.sock
On peut aussi forcer ce chemin pour le client dans /etc/my.cnf (ou /etc/mysql/my.cnf). Modifier ou créer un bloc [client] :
[client] socket=/var/run/mysqld/mysqld.sock
- La résolution de "localhost" est erronée
Plus bizarre (il n'y a pas d'explication claire sur le lien entre une connexion locale par le fichier socket, et une connexion locale mais par le réseau, sur "localhost", qui sont normalement deux façons distinctes de se connecter à mysql en local sur un serveur), ce message peut apparaître aléatoirement quand la résolution de "localhost" (adresse de loopback) se fait mal ou pas du tout. "Aléatoirement" signifie que la connexion peut se faire normalement au départ mais planter sans prévenir avec cette erreur.
Vérifier /etc/hosts. On doit y voir au minimum :
127.0.0.1 localhost
Autre erreur constatée : mauvaise adresse IP pour localhost :
127.0.1.1 localhost
Cette adresse, bien que correcte pour un loopback, gêne beaucoup MySQL.