Diese Frage bezieht sich auf folgende Fragen:
Ich konfiguriere einen neuen MySQL (5.1) -Server auf meinem lokalen Rechner. Ich muss den Fernzugriff auf die Datenbank ermöglichen. Ich habe folgende Schritte ausgeführt:
Kommentar bind-address
in my.cnf:
# bind-address = 192.168.1.3
Privilegien gewähren:
GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
Konfigurieren Sie iptables für die Firewall
Sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT
Sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT
Sudo iptables-save
Starten Sie den MySQL-Server Sudo /etc/init.d/mysql restart
neu.
Beim Testen erhalte ich Folgendes:
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)
Remote:
mysql -h 1xx.xx.4.136 -u nickruiz -p
ERROR 2003 (HY000): Can't connect to MySQL server on '1xx.xx.4.136' (111)
Es liegt auf der Hand, dass etwas falsch ist, was mich daran hindert, meine globale IP-Adresse zu verwenden.
Anmerkungen:
Irgendwelche Ideen?
Update: Telnet scheint nicht zu funktionieren.
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.
Bitte überprüfen Sie Ihre Listening-Ports mit:
netstat -nat |grep :3306
Wenn es zeigen
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
Das ist in Ordnung für Ihre Remote-Verbindung.
Aber in diesem Fall glaube ich
tcp 0 192.168.1.3:3306 0.0.0.0:* LISTEN
Das ist in Ordnung für Ihre Remote-Verbindung. Sie sollten auch Ihre Firewall überprüfen (iptables, wenn Sie Centos/Redhat verwenden
services iptables stop
zum testen oder verwenden:
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
Und noch etwas, um Ihre Erlaubnis für die Fernverbindung zu prüfen:
GRANT ALL ON *.* TO [email protected]'remoteIpadress' IDENTIFIED BY 'my_password';
errno 111 ist ECONNREFUSED. Ich denke, mit dem DNAT des Routers stimmt etwas nicht.
Es ist auch möglich, dass Ihr ISP diesen Port filtert.
Stellen Sie sicher, dass Ihr Remote-Host (d. H. Der Webhosting-Server, von dem Sie eine Verbindung herstellen möchten) OUTGOING-Datenverkehr an Port 3306 zulässt.
Ich habe den (100) Fehler in dieser Situation gesehen. Ich könnte eine Verbindung von meinem PC/Mac herstellen, aber nicht von meiner Website. Die MySQL-Instanz war über das Internet zugänglich, aber mein Hosting-Unternehmen erlaubte meiner Website nicht, eine Verbindung zur Datenbank an Port 3306 herzustellen.
Nachdem ich mein Hosting-Unternehmen gebeten hatte, mein Webhosting-Konto für ausgehenden Datenverkehr an Port 3306 zu öffnen, konnte meine Website eine Verbindung zu meiner Remote-Datenbank herstellen.
/etc/mysql$ Sudo nano my.cnf
Relevanter Teil, der für mich funktioniert:
#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
kann mit ifconfig
oder curl -L whatismyip.org |grep blue
gefunden werden.
Starten Sie mysql neu, um sicherzustellen, dass die neue Konfiguration geladen wird:
/etc/mysql$ Sudo service mysql restart
Ich hatte das gleiche Problem beim Versuch, eine Verbindung zu einer entfernten MySQL-Datenbank herzustellen.
Ich habe es behoben, indem ich die Firewall auf dem Datenbankserver geöffnet habe, um Datenverkehr durchzulassen:
Sudo ufw allow mysql
Ich habe die gleiche Frage wie Sie. Ich verwende Wireshark, um meine gesendeten TCP) - Pakete zu erfassen. Wenn ich mysql
bin verwende, um den Remote-Host zu verbinden, verbindet es den Remote-Host 3307 port, das ist mein Fehler in /etc/mysql/my.cnf
, 3307 ist ein anderer Projekt-MySQL-Port, aber ich ändere diese Konfiguration im Teil my.cnf
[client], wenn ich die Option -P
verwende, um 3306 anzugeben Port, es ist in Ordnung.
ich habe meine Bindeadresse korrekt wie oben eingestellt, aber vergessen, den MySQL-Server neu zu starten (oder einen Neustart durchzuführen) :) Face Palm - das ist also die Quelle dieses Fehlers für mich!
Manchmal, wenn Sie Sonderzeichen im Kennwort haben, müssen Sie es in ''
-Zeichen einschließen. Um eine Verbindung zu db herzustellen, können Sie Folgendes verwenden:
mysql -uUSER -p'pa$$w0rd'
Ich hatte den gleichen Fehler und diese Lösung hat es gelöst.
wenn Sie als System CentOS/RedHat verwenden und mit MySQL RPM installieren, befindet sich keine my.cnf im/etc/-Ordner. #whereis MySQL #cd /usr/share/mysql/ cp -f /usr/share/mysql/my-medium.cnf /etc/my.cnf