2010-09-10 7 views
3

J'ai un serveur qui tente de se connecter à une base de données MySQL hébergée en dehors du réseau local. J'essaie d'utiliser une adresse IP publique pour me connecter.Impossible de se connecter au serveur MySQL distant

Test de la connexion à la ligne de commande me donne cette erreur:

ERROR 2003 (HY000): Can't connect to MySQL server on '[ip_address]' (146)

AOP me donne la même erreur. Dans tous les cas, la connexion fonctionne bien localement et au sein du même réseau, ce qui me dépasse.

Le serveur MySQL a son bind-address modifiée de sorte qu'il accepte les connexions à distance. Le serveur MySQL a également un utilisateur avec les privilèges appropriés. Mais en tout cas, il semble que je ne peux même pas commencer la connexion en premier lieu.

Y at-il une valeur my.cnf je dois ajouter à laisser MySQL accepter les demandes de l'extérieur du réseau local?

Merci.

Répondre

4

choses à vérifier:

  1. MySQL écoute sur IP publique (on dirait que vous avez fait)
  2. MySQL écoute sur le port standard/vous vous connectez le même port sur lequel il d'écouter.
  3. Existe-t-il un pare-feu sur la machine distante? (Ils sont généralement empaquetés en standard dans les distributions) Le pare-feu est-il configuré pour autoriser les connexions à ce port?
  4. Si la machine distante est dans un autre réseau, est la traduction d'adresses réseau (NAT), il passe entre votre connexion et la machine à bout - si oui, est-il configuré pour permettre le port MySQL à travers.
  5. Le fichier my.cnf est-il configuré pour autoriser les connexions autres que localhost127.0.0.1 IP - bien que vous ayez plus de chances d'obtenir une réponse d'accès refusé qu'une connexion impossible.
+0

Salut Rudi, merci pour la réponse! ... 1. Eh oui, 2. 3306, 3. Aucun pare-feu, pour autant que je peux tell, 4. Pas de NAT, IP direct, 5. bind-address est défini et skip-networking est supprimé –

+0

Dans ce cas: 'ping ' - vérifiez que vous obtenez une réponse. 'telnet 3306' - devrait sortir une chaîne de version (cela ne fonctionnera pas correctement, mais cela vous donnera un indice si elle est en cours d'exécution) Vérifiez aussi que le démon fonctionne sur le serveur (dépend de win/linux) – Rudu

+0

Quelques bons points dans la rà © ponse, Rudu, merci Le problème s'est avà © rà © à être un config var bonehead de ma part - j'avais mis le "bind-address" à une IP interne, et je m'attendais à travailler extà © rieurement. un tir ed vendredi après-midi ... –

1

Il sonne vraiment comme le client est pas en mesure de se connecter. Cette page a quelques suggestions sur la façon de limiter le problème:

http://dev.mysql.com/doc/refman/5.1/en/can-not-connect-to-server.html

Qu'advient-il si vous essayez de telnet sur le port 3306 sur le serveur? Vous devriez recevoir une invite de MySQL.

+0

J'ai fini par essayer de me connecter via la ligne de commande: 'mysql --host = foobar', et même cela n'a pas fonctionné, ce qui m'a conforté dans un peu. –

2

accorder des privilèges à l'utilisateur à partir de cet hôte particulier. ou pour y accéder depuis n'importe quel hôte, utilisez% (c'est-à-dire joker) en tant qu'hôte.

+0

Salut Sandesh - croiriez-vous que j'ai pensé à ce problème il y a des années? Vérifiez la réponse ci-dessus pour voir ce qui s'est mal passé. :) Aussi, bienvenue sur StackOverflow! –

0

accorder les privilèges pour tous les utilisateurs à l'aide de la commande

GRANT ALL PRIVILEGES SUR . A 'root' @ 'localhost' IDENTIFIÉ PAR 'root' AVEC OPTION GRANT; ACCÉDER À TOUS LES PRIVILEGES AU . A 'root' @ '%' IDENTIFIÉ PAR 'root' AVEC OPTION GRANT; PRIVILÈGES FLUSH;

Allez maintenant à votre fichier "my.cnf". Pour une utilisation ubuntu (sudo find/-type f -name "my.cnf")

commentaire sur la ligne « bind-address = 127.0.0.1"

restart Pour MySQL avec ubuntu utiliser "restart sudo service mysql"

+0

Je ne suis pas en mesure de me connecter en tant que root après avoir exécuté ces commandes. – Mohit

Questions connexes