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.
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)
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:
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.
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)
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 …)
À 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