web-dev-qa-db-fra.com

Essayer de se connecter à l'hôte MySQL distant (erreur 2003)

J'ai une instance MySQL s'exécutant sur un serveur Debian et je peux me connecter localement sans aucun problème. Cependant, je ne parviens pas à me connecter à distance. Quand j'essaye ceci de ma ligne de commande j'obtiens l'erreur suivante:

ERROR 2003 (HY000): Can't connect to MySQL server on '<server-ip>' (110)

J'ai ajouté l'utilisateur à mysql en tant qu'utilisateur '@' * 'et' utilisateur '@' localhost '. skip-networking sur ce serveur est défini sur false et l'adresse de liaison est commentée dans my.cnf. J'ai également tenté d'ouvrir le port 3306 dans iptables à l'aide de la commande suivante:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

Voici une liste de toutes mes règles de pare-feu iptable, que j'ai récupérées avec iptables -L:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     tcp  --  anywhere             anywhere            tcp dpt:auth reject-with icmp-port-unreachable 
ACCEPT     icmp --  anywhere             anywhere            icmp type 8 code 0 state NEW,RELATED,ESTABLISHED,UNTRACKED 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpt:ftp state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpt:ssh state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp spts:1024:65535 dpt:www state NEW 
ACCEPT     tcp  --  <my-server>          anywhere            tcp spts:1024:65535 dpt:mysql state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpts:49152:65534 state NEW 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:mysql 
LOG        all  --  anywhere             anywhere            limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: ' 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:mysql 
LOG        tcp  --  anywhere             anywhere            tcp dpt:mysql LOG level debug 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Est-ce que quelqu'un a une idée d'où je devrais aller d'ici?

25
hellsgate

En fonction de votre réponse, vous devez déterminer s’il existe un périphérique entre vous et le serveur qui bloque votre connexion. Vous devez également vous assurer que vous pouvez connecter telnet à 3306 sur l'adresse Ethernet de ce serveur si vous êtes connecté au serveur ... sinon, vous n'avez probablement pas le service lié à l'Ethernet en my.cnf... voir le paramètre bind-address .

12
Mike Pennington

Vous devriez vérifier la configuration de votre serveur MySQL pour voir si elle se lie à 127.0.0.1. Vous ne pouvez alors vous connecter à mysql que si votre application est sur le même serveur . interface.

1
anony

En raison de la fermeture du port 3306, vérifiez l'état du port du serveur.

http://www.yougetsignal.com/tools/open-ports/

Si elle est fermée, cela signifie que vous ne pouvez pas y accéder de l'extérieur de la machine pour ouvrir le port

ufw - Pare-feu simple

L'outil de configuration de pare-feu par défaut pour Ubuntu est ufw. Voici quelques exemples d'utilisation de ufw:

Tout d'abord, ufw doit être activé. À partir d'une invite de terminal, entrez:

Sudo ufw enable

Pour ouvrir un port (mysql):

Sudo ufw allow 3306

Pour voir l'état du pare-feu, entrez:

Sudo ufw status
1
Basil Jose

pour moi, cela consistait à activer le port 3306 dans le fichier /etc/default/iptables afin d'autoriser le trafic entrant en provenance de n'importe quel hôte en décommentant la ligne donnée ci-dessous:

#-A INPUT -p tcp --dport 3306 -j ACCEPT
0
Nasir Mahmood

Si vous utilisez une connexion VPN pour vous connecter à un serveur de base de données distant et que vous rencontrez ce type d'erreur, il suffit de vérifier deux étapes simples ...

1) Sous Windows, accédez au chemin "Panneau de configuration\Réseau et Internet\Connexions réseau", cliquez avec le bouton droit de la souris sur le réseau local et sélectionnez Propriétés Cliquez sur TCP/IPv4 et allez dans les propriétés. Assurez-vous que le serveur IP et DNS (si vous utilisez DHCP ou non?).

2) Ensuite, redémarrez la machine et vérifiez-la à nouveau. 

J'espère que cela fonctionnera. Dans mon cas ça marche.

Remarque: Assurez-vous que tous vos paramètres sont corrects. Cette réponse est marrante mais ça marche dans mon cas :)

Merci!

0
Amit Contractor