Outils personnels

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.