wake-up-neo.net

FEHLER 2003 (HY000): Verbindung mit MySQL-Server kann nicht hergestellt werden (111)

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:

  1. Kommentar bind-address in my.cnf: 

    # bind-address      = 192.168.1.3
    
  2. Privilegien gewähren:

    GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
    
  3. Portweiterleitung am Router einstellen (TCP und UDP, Port 3306, 192.168.1.3)
  4. 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
    
  5. 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: 

  • Ich habe versucht, die Remoteverbindung auf demselben Computer zu testen und auch über SSH von einem Remote-Computer aus
  • Ich bin nicht sicher, ob mein ISP mir eine statische IP gegeben hat.

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.
31
Nick Ruiz

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';
11
Toi Lee

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.

4
NickGPS
/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
3
Cees Timmerman

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
0
Dan King

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.

0
dawncold

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!

0
bsautner

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.

0
maszynka

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

0
jammyWolf