web-dev-qa-db-fra.com

Impossible d'accéder à distance au serveur MySQL fonctionnant sous Mac OS X

J'ai un serveur MySQL en cours d'exécution 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 my.cnf fichier sur le serveur en commentant bind-address ou en l'affectant à 0.0.0.0 mais ça ne marche 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?

11
chepukha

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é après 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é en utilisant brew install mysql. Toujours aucune connexion à distance autorisée.

Ce n'est que lorsque j'ai couru ps -ax | grep mysql et a remarqué que l'adresse de liaison était passée dans la commande de lancement (remplaçant ainsi tout 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 changer --bind-address=127.0.0.1 à --bind-address=0.0.0.0 a résolu mon problème (cette dernière devrait être remplacée par une adresse IP spécifique s'il ne s'agit pas uniquement d'une machine de développement).

Je pense que c'est une information vitale qui faisait défaut dans la plupart des ressources que j'ai consultées, alors j'espère que poster ceci ici aidera quelqu'un d'autre!

EDIT: Comme LeandroCR indiqué dans les commentaires, exécutant brew services restart mysql écrasera le fichier plist dans LaunchAgents avec celui par défaut, ce qui entraînera à nouveau le refus mystérieux des connexions par MySQL. Donc, un meilleur conseil que ce que j'ai écrit à l'origine est le suivant:

  1. Éditer /usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist et remplacez --bind-address=127.0.0.1 avec bind-address=* ou --bind-address=0.0.0.0 ( voir la documentation MySQL sur bind-address )
  2. 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 (Sep 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.

20
Emma Burrows

Fonctionnement locate my.cnf a trouvé le fichier /usr/local/etc/my.cnf

  1. Modifiez ce fichier et définissez bind-address = 0.0.0.0
  2. Redémarrez mysql: brew services restart mysql
6
Pablo Díaz Ogni

J'espère que vous devez créer l'utilisateur pour l'accès à distance avec '%' caractères génériques et accorder des autorisations sur les bases de données.

Étape 1:

Dans my.cnf ( https://serverfault.com/questions/9107/how-do-i-find-where-mysql-is-loading-its-config-from ) commentez votre lien adresse

# bind-address        = xxx.xxx.xxx.xxx

Et redémarrez MySQL Server.

Étape 2:

Ensuite, vous devez accorder des autorisations à l'utilisateur pour l'accès à distance

GRANT ALL ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypass';

Veuillez consulter Comment activer la connexion à distance.

5
Abdul Manaf

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:

iptables -A ALLOWIN -s 192.168.1.XX/32 ! -i lo -j ACCEPT
0
Priyanka Kariya