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:
Commentaire bind-address
dans mon.cnf:
# bind-address = 192.168.1.3
Accorder des privilèges:
GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
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
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:
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.
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';
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.
/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
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
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!
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.
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