web-dev-qa-db-fra.com

ERREUR 2003 (HY000): Impossible de se connecter au serveur MySQL (111)

Cette question est liée aux questions suivantes:

Je configure un nouveau serveur MySQL (5.1) sur mon ordinateur local. Je dois fournir un accès à distance à la base de données. J'ai fait les étapes suivantes:

  1. Commentaire bind-address dans mon.cnf: 

    # bind-address      = 192.168.1.3
    
  2. Accorder des privilèges:

    GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
    
  3. Définir la redirection de port sur le routeur (TCP et UDP, port 3306, 192.168.1.3)
  4. Configurer iptables pour le pare-feu

    Sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT
    
    Sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT
    
    Sudo iptables-save
    
  5. Redémarrez le serveur mysql Sudo /etc/init.d/mysql restart

Lors des tests, j'obtiens les éléments suivants:

LAN:

mysql -h 192.168.1.3 -u nickruiz -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 95
Server version: 5.1.63-0ubuntu0.11.04.1 (Ubuntu)

Éloigné:

mysql -h 1xx.xx.4.136 -u nickruiz -p
ERROR 2003 (HY000): Can't connect to MySQL server on '1xx.xx.4.136' (111)

Il est clair que quelque chose qui ne va pas m'empêche de pouvoir utiliser mon adresse IP globale.

Remarques: 

  • J'ai essayé de tester la connexion distante sur le même ordinateur et également Via SSH à partir d'un ordinateur distant. 
  • Je ne suis pas sûr si mon FAI m'a donné une adresse IP statique.

Des idées?

Mise à jour: Telnet ne semble pas fonctionner.

telnet 192.168.1.3 3306
Trying 192.168.1.3...
Connected to 192.168.1.3.
Escape character is '^]'.
E
5.1.63-0ubuntu0.11.04.1,0g8!:@pX;]DyY0#\)SIConnection closed by foreign Host.
31
Nick Ruiz

Veuillez vérifier vos ports d'écoute avec:

netstat -nat |grep :3306

Si cela se voit

 tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN 

C'est ok pour votre connexion à distance.

Mais dans ce cas, je pense que vous avez 

tcp        0     192.168.1.3:3306            0.0.0.0:*               LISTEN 

C’est correct pour votre connexion à distance . Vous devriez également vérifier votre pare-feu (iptables si vous centos/redhat)

services iptables stop

pour tester ou utiliser:

iptables -A input -p tcp -i eth0 --dport 3306 -m state NEW,ESTABLISHED -j ACCEPT
iptables -A output -p tcp -i eth0 --sport 3306 -m state NEW,ESTABLISHED -j ACCEPT

Et une autre chose à vérifier votre autorisation d'accord pour la connexion à distance:

GRANT ALL ON *.* TO remoteUser@'remoteIpadress' IDENTIFIED BY 'my_password';
11
Toi Lee

errno 111 est ECONNREFUSED, je suppose que le DNAT du routeur a un problème.

Il est également possible que votre fournisseur de services Internet filtre ce port.

Vérifiez que votre hôte distant (c'est-à-dire le serveur d'hébergement Web à partir duquel vous essayez de vous connecter) autorise le trafic OUTGOING sur le port 3306. 

J'ai vu l'erreur (100) dans cette situation. Je pouvais me connecter depuis mon PC/Mac, mais pas depuis mon site Web. L'instance MySQL était accessible via Internet, mais ma société d'hébergement n'autorisait pas mon site Web à se connecter à la base de données sur le port 3306. 

Une fois que j'ai demandé à ma société d'hébergement d'ouvrir mon compte d'hébergement Web au trafic sortant sur le port 3306, mon site Web pouvait se connecter à ma base de données distante.

4
NickGPS
/etc/mysql$ Sudo nano my.cnf

Partie pertinente qui fonctionne pour moi:

#skip-networking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = MY_IP

MY_IP peut être trouvé en utilisant ifconfig ou curl -L whatismyip.org |grep blue.

Redémarrez mysql pour vous assurer que la nouvelle configuration est chargée:

/etc/mysql$ Sudo service mysql restart
3
Cees Timmerman

J'ai eu le même problème en essayant de me connecter à une base de données mysql distante. 

Je l'ai corrigé en ouvrant le pare-feu sur le serveur de base de données pour autoriser le trafic via:

Sudo ufw allow mysql
0
Dan King

j'ai réglé mon adresse de lien correctement comme ci-dessus, mais j'ai oublié de redémarrer le serveur mysql (ou de redémarrer) :) face Palm - c'est donc la source de cette erreur pour moi!

0
bsautner

Parfois, lorsque vous avez des caractères spéciaux dans le mot de passe, vous devez le placer dans des caractères ''. Pour vous connecter à db, vous pouvez utiliser:

mysql -uUSER -p'pa$$w0rd'

J'ai eu la même erreur et cette solution l'a résolu.

0
maszynka

si le système que vous utilisez est CentOS/RedHat et que rpm correspond à la façon dont vous installez MySQL, il n'y a pas de fichier my.cnf dans/etc/folder. #whereis mysql #cd /usr/share/mysql/ cp -f /usr/share/mysql/my-medium.cnf /etc/my.cnf

0
jammyWolf