J'ai un serveur MySQL exécuté sur mon ordinateur de travail, qui exécute Mac OS X Maverick. Je veux y accéder à partir d'un ordinateur personnel, qui dispose également de Mac OS Maverick.
Depuis le terminal, si dans 1 onglet, je ssh dans mon ordinateur de travail et laisse simplement la session ssh y rester sans être inactif, puis sur un autre onglet, je peux accéder au serveur MySQL.
Cependant, sans la session ssh en cours d'exécution, j'obtiendrai l'erreur suivante
ERREUR 2003 (HY000): impossible de se connecter au serveur MySQL sur 'SERVER_IP_ADDRESS' (60)
J'ai essayé de modifier le my.cnf
fichier sur le serveur en commentant bind-address ou en l'affectant, 0.0.0.0
mais cela ne fonctionne pas.
Pourquoi est-ce comme ça? Comment puis-je configurer le serveur afin qu'il autorise l'accès à distance sans avoir à exécuter ssh sur le client? Puis-je avoir une aide s'il vous plait?
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.Réponses:
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ésbind-address=0.0.0.0
. J'ai même supprimé et réinstallé MySQL en suivant ces instructions , puis réinstallé à l'aide debrew 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 lesmy.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:/usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist
et remplacez--bind-address=127.0.0.1
parbind-address=*
ou--bind-address=0.0.0.0
( voir la documentation MySQL sur bind-address )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.
la source
brew install mysql56
et j'ai changé les fichiers~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
et/usr/local/Cellar/mysql56/5.6.32/homebrew.mxcl.mysql56.plist
. Mais quand je lance mysqlmysql.server start
, la commande ps montre que lebind-address=127.0.0.1
. Y a-t-il d'autres fichiers à modifier?mysql.server start
contourne le LaunchAgent, donc il obtient probablement son paramètre ailleurs. Pour utiliser le paramètre dans leplist
, vous devez probablement utiliserbrew services restart mysql
brew services restart mysql
sortieSuccessfully started
mysql` (label: homebrew.mxcl.mysql) `mais l'adresse est toujours127.0.0.1
. En fait, je ne pouvais pas trouverhomebrew.mxcl.mysql.plist
au lieu d'avoirhomebrew.mxcl.mysql56.plist
mysqld_safe
n'a pasbind_address
. Au lieu de cela, il est spécifié dans/usr/local/etc/my.cnf
.Running a
locate my.cnf
trouvé le fichier/usr/local/etc/my.cnf
bind-address = 0.0.0.0
brew services restart mysql
la source
J'espère que vous devez créer l'utilisateur pour l'accès à distance avec des
'%'
caractères génériques et accorder des autorisations sur les bases de données.Étape 1:
Dans my.cnf ( /server/9107/how-do-i-find-where-mysql-is-loading-its-config-from ) commentez votre adresse de liaison
Et redémarrez MySQL Server.
Étape 2:
Ensuite, vous devez accorder des autorisations à l'utilisateur pour l'accès à distance
Veuillez consulter Comment activer la connexion à distance.
la source
mysql> show grants for 'home'; | Grants for home@% | GRANT ALL PRIVILEGES ON *.* TO 'home'@'%' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
Vérifiez iptables comme iptables -L
Si votre adresse IP n'est pas présente, ajoutez-la
Dans le cas d'Ubuntu ADD IP pour autoriser l'accès:
la source