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?
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
.
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.
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
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
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!