Je me suis cogné la tête contre cette erreur aujourd'hui sur OSX Yosemite avec MySQL 5.7 récemment mis à jour avec Homebrew. Suite aux suggestions sur StackOverflow et ailleurs, j'ai cherché des my.cnf
fichiers tous spécifiés bind-address=0.0.0.0
. J'ai même supprimé et réinstallé MySQL en suivant ces instructions , puis réinstallé à l'aide de brew install mysql
. Toujours aucune connexion à distance autorisée.
Ce n'est que lorsque j'ai couru ps -ax | grep mysql
et remarqué que l'adresse de liaison était passée dans la commande de lancement (remplaçant ainsi tous les my.cnf
fichiers) que j'ai creusé un peu plus et découvert que Homebrew lie MySQL à 127.0.0.1 par défaut .
Modification ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
de changer --bind-address=127.0.0.1
pour --bind-address=0.0.0.0
résoudre mon problème (ce dernier devrait être remplacé par une adresse IP spécifique si ce n'est pas seulement une machine de développement).
Je pense que c'est une information vitale qui manquait dans la plupart des ressources que j'ai consultées, alors j'espère que publier ceci ici aidera quelqu'un d'autre!
EDIT: Comme LeandroCR l'a indiqué dans les commentaires, l'exécution brew services restart mysql
écrasera le fichier plist dans LaunchAgents avec celui par défaut, ce qui conduira MySQL à refuser mystérieusement à nouveau les connexions. Donc, un meilleur conseil que ce que j'ai écrit à l'origine est le suivant:
- Editez
/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
et remplacez --bind-address=127.0.0.1
par bind-address=*
ou --bind-address=0.0.0.0
( voir la documentation MySQL sur bind-address )
- Redémarrez mysql en utilisant
brew services restart mysql
Ensuite, MySQL devrait continuer à accepter les connexions non locales à partir de là - jusqu'à ce que vous le réinstalliez, probablement.
Edit (septembre 2019)
Timothy Zorn souligne que ce problème ne se produit plus pour MySQL 8.x installé et exécuté via Homebrew, donc ma réponse ci-dessus, écrite en 2016, peut ne concerner que 5.x.
ssh
est ouvert dans un onglet, mais sinon non. Je pense que le problème est que le processus du serveur de base de données est en pause ou ne fonctionne pas lorsque je ne suis pas connecté au serveur distant.