Impossible de se connecter au serveur MySQL local via homebrew socket

J’ai récemment essayé d’installer MySQL avec homebrew ( brew install mysql ) et lorsque j’essaie de l’exécuter, j’obtiens l’erreur suivante:

ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local via le socket ‘/tmp/mysql.sock’ (2)

Il n’y a pas de /tmp/mysql.sock ni de /var/lib/mysql.sock .

J’ai cherché et n’ai pas trouvé de fichier mysql.sock .

Comment puis-je réparer cela?

Lorsque vous avez le serveur en cours d’exécution via

mysql.server start

vous devriez voir le socket dans /tmp/mysql.sock . Toutefois, le système semble l’attendre dans /var/mysql/mysql.sock . Pour résoudre ce problème, vous devez créer un lien symbolique dans / var / mysql :

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Cela l’a résolu pour moi. Maintenant, mon phpMyAdmin fonctionne normalement avec localhost et 127.0.0.1 .

Le crédit va à Henry

On dirait que votre serveur mysql n’est pas démarré. Je lance habituellement la commande d’arrêt puis la redémarre:

 mysqld stop mysql.server start 

Même erreur, et cela fonctionne pour moi.

Essayez de vous connecter en utilisant “127.0.0.1” au lieu de “localhost”.

1) Si vous êtes en mesure de voir “mysql arrêté” lorsque vous exécutez la commande ci-dessous;

 brew services list 

2) et si vous pouvez démarrer mysql avec la commande ci-dessous;

 mysql server start 

alors, append mysql aux services corrigera votre problème. Avec cette méthode, mysql démarrera en tant que service au démarrage de votre système d’exploitation. Pour ce faire, vous pouvez exécuter la commande ci-dessous;

 brew services start mysql 

Après cela, vous pouvez redémarrer votre système et essayer de vous connecter à mysql. J’ai fait la même chose et j’ai cessé de recevoir une erreur inférieure à la normale.

ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local via le socket ‘/tmp/mysql.sock’ (2)

J’espère que ça aide.

J’ai eu la même erreur et c’est ce qui m’a aidé:

 $ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents $launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist $mysql -uroot mysql> 

Vous devrez exécuter mysql_install_db – le plus simple est si vous êtes dans le répertoire d’installation:

 $ cd /usr/local/Cellar/mysql// $ mysql_install_db 

Alternativement, vous pouvez alimenter mysql_install_db un paramètre basedir comme suit:

 $ mysql_install_db --basedir="$(brew --prefix mysql)" 

J’ai rencontré le même problème sur mon mac et l’ai résolu en suivant les tutoriels suivants

https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew

Mais n’oubliez pas de tuer ou de désinstaller l’ancienne version avant de continuer.

Commandes:

 brew uninstall mariadb xcode-select --install ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - See more at: https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew#sthash.XQoxRoJp.dpuf brew doctor brew update brew info mariadb brew install mariadb mysql_install_db mysql.server start 

juste pour compléter ce fil. donc MAMP (PRO) est utilisé assez souvent

le chemin est ici

 /Applications/MAMP/tmp/mysql/mysql.sock 

Comme j’ai passé pas mal de temps à essayer de résoudre ce problème et à revenir sur cette page en cherchant cette erreur, je laisserai ma solution ici en espérant que quelqu’un sauve le temps que j’ai perdu. Bien que dans mon cas, j’utilise mariadb plutôt que MySQL, vous pourrez toujours adapter cette solution à vos besoins.

Mon problème

est le même, mais ma configuration est un peu différente (mariadb au lieu de mysql):

Mariadb installé avec homebrew

 $ brew install mariadb 

Démarrage du démon

 $ brew services start mariadb 

Essayé de se connecter et obtenu l’erreur mentionnée ci-dessus

 $ mysql -uroot ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 

Ma solution

Découvrez quels fichiers my.cnf sont utilisés par mysql (comme suggéré dans ce commentaire ):

 $ mysql --verbose --help | grep my.cnf /usr/local/etc/my.cnf ~/.my.cnf order of preference, my.cnf, $MYSQL_TCP_PORT, 

vérifiez où le fichier de socket Unix est exécuté (presque comme décrit ici ):

 $ netstat -ln | grep mariadb .... /usr/local/mariadb/data/mariadb.sock 

(vous pourriez vouloir grep mysql au lieu de mariadb)

Ajoutez le fichier de socket que vous avez trouvé à ~/.my.cnf (créez le fichier si nécessaire) (en supposant que ~/.my.cnf était répertorié lors de l’exécution de la commande mysql --verbose ... par le haut):

 [client] socket = /usr/local/mariadb/data/mariadb.sock 

Redémarrez votre mariadb:

 $ brew services restart mariadb 

Après cela, je pourrais lancer mysql et obtenir:

 $ mysql -uroot ERROR 1698 (28000): Access denied for user 'root'@'localhost' 

Donc, je lance la commande avec les privilèges de superutilisateur et après avoir entré mon mot de passe, j’ai:

 $ sudo mysql -uroot MariaDB [(none)]> 

Remarques:

  1. Je ne suis pas tout à fait sûr des groupes où vous devez append la socket, je l’avais d’abord [client-serveur], mais je me suis dit que [client] devrait suffire. Donc je l’ai changé et ça marche toujours.

  2. Lors de l’exécution de mariadb_config | grep socket mariadb_config | grep socket je reçois: --socket [/tmp/mysql.sock] qui est un peu déroutant car il semble que /usr/local/mariadb/data/mariadb.sock est l’endroit réel (au moins sur ma machine)

  3. Je me demande où je peux configurer /usr/local/mariadb/data/mariadb.sock pour être /tmp/mysql.sock afin que je puisse utiliser les parameters par défaut au lieu de modifier mon .my.cnf (mais je suis trop fatigué maintenant pour comprendre ça …)

  4. À un certain moment, j’ai aussi fait des choses mentionnées dans d’autres réponses avant de venir avec cela.

Juste pour append à ces réponses, dans mon cas je n’avais pas de serveur mySQL local, il fonctionnait à l’intérieur d’un conteneur de docker. Le fichier de socket n’existe donc pas et ne sera pas accessible au client “mysql”.

Le fichier sock est créé par mysqld et mysql l’utilise pour communiquer avec lui. Toutefois, si votre serveur mySql ne fonctionne pas en local, il n’a pas besoin du fichier sock.

En spécifiant un nom d’hôte / ip, le fichier de chaussette n’est pas requirejs, par exemple

 mysql --host=127.0.0.1 --port=3306 --user=xyz --password=xyz