Remote-MySQL-Verbindung schlägt fehl (10060)

8

Wenn ich versuche, von einem Remotecomputer aus eine Verbindung zu einer MySQL-Datenbank herzustellen, wird eine Eingabeaufforderung angezeigt: Connection Failed: [HY000] [MySQL][ODBC 5.1 Driver]Can't Connect to MySQL server on 'XXX.XXX.XX.XX' (10060)

Ich habe ein Benutzerkonto im MySQL-Administrator erstellt und einen Host hinzugefügt, um den Remotezugriff zu ermöglichen. Ich habe auch eine Ausnahme für meine Windows-Firewall am Port gemacht, 3306aber die Verbindung schlägt immer noch fehl.

Was ist das Problem?

Vielen Dank!


quelle
1
Keine programmierbezogene Frage, aber prüfen Sie trotzdem, ob der Remotecomputer eine Verbindung zu einem anderen Dienst herstellen kann, der auf demselben Computer ausgeführt wird, auf dem Sie den MySQL-Server ausführen. Ich bezweifle es jedoch. Sehr wahrscheinlich ein NAT-Problem.
@ Jweyrich: Sie hatten sehr Recht, der ISP hat alle Ports außer 21, 80 und 3389 blockiert.

Antworten:

5

Ich nehme an, Ihr MySQL-Server läuft unter Windows ... öffnen Sie also ein DOS-Fenster und geben Sie Folgendes ein:

netstat -an

Sie sollten eine Zeile wie diese finden:

TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING

Hier erfahren Sie, dass der MySQL-Server auf dem TCP-Port 3306 ausgeführt wird und diesen überwacht.

Ein weiterer Test, den Sie durchführen können, ist das Telnet (von einem anderen PC) auf Ihren MySQL-Server:

telnet ip_mysql_server 3306

Dies sollte eine Telnet-Sitzung öffnen:

Connected to server_name.
Escape character is '^]'.
5.0.XX-community-nt-log
lg.
quelle
Vielen Dank dafür. Ich habe versucht, vom Remotecomputer aus mit "telnet ip_mysql_server 3306" eine Verbindung zum Server herzustellen, aber die Verbindung schlägt fehl.
Vielleicht scheint dies eine dumme Frage zu sein, aber ... läuft ein MySQL-Server? Welches ist das Ergebnis von netstat?
lg.
2

Zunächst einmal ist es eine sehr schlechte Idee, einen weltweit offenen Port für Ihren Datenbankserver zu haben. Vor allem, wenn es sich um den MySQL-Standardport handelt. Sie laden nur Leute ein, zu versuchen, in Ihre Datenbank einzudringen.

Haben Sie versucht, den Datenbankserver mit einem Port-Scan-Tool wie nmap auf Ihrem Remotecomputer zu scannen? Es wird Ihnen sagen, ob der Port mit geöffnet ist nmap -PN -p 3306 XXX.XXX.XX.XX?

Amphetamachine
quelle
2

Der Fehler 10060 bedeutet, dass Sie nicht remote auf den Webserver zugreifen dürfen . Deshalb

  1. Stellen Sie sicher, dass Sie die richtige IP-Adresse des MySQL-Servers verwenden.
  2. Die restlichen Parameter Ihrer Verbindung sind identisch.
  3. Verwenden Sie den %Platzhalter für den Host-Teil des Benutzerkontos, um die Verbindung von einem beliebigen Host aus zu ermöglichen (siehe Artikel Hinzufügen von Benutzerkonten ).

Weitere Informationen finden Sie unter Lösung für die Remoteverbindung, wenn Sie den Beitrag " Fehler 10060" erhalten .

Alexander
quelle
1

1) Zugriff auf iptables

sudo iptables -I INPUT -p tcp --dport 3306-j ACCEPT 
sudo service iptables save

2) my.conf

[mysqld]
port = 3306
bind-address = 0.0.0.0

3) MySQL

GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%';
FLUSH PRIVILEGES;

4) mysqld

sudo service mysqld restart
Олег Беликов
quelle
Wie @amphetamachine in der obigen Antwort beschreibt, ist dies alles andere als Best Practices . 1. & 2. öffnet MySQL für alle. 3. hat überhaupt nichts mit der Frage zu tun - und selbst wenn dies der Fall war, bietet es Zugriff auf jede Datenbank anstelle einer, was wahrscheinlich nicht erwünscht ist.
Esa Jokinen
1

Überprüfen Sie die MySQL-Konfiguration: /etc/my.cnf

und kommentieren:

skip-networking

Jetzt werden TCP / IP-Ports abgehört. Normalerweise haben Sie jedoch den direkten Zugriff auf MySQL über die Firewall blockiert, sodass dies kein Problem darstellen sollte. Sie können jetzt SSH über TCP / IP als " localhost" auf den MySQL-Server übertragen.

zB Windows- batDatei, PuTTY-Tunnel:

@putty.exe -ssh -pw PassWord -L 3306:localhost:3306 odbcuser@remoteHost
EXIT

Wenn auf Ihrem lokalen Computer XAMPP / MySQL ausgeführt wird, ändern Sie den obigen Port in 3307:

3307:localhost:3306
user127379
quelle
1

In diesem Artikel erfahren Sie, wie Sie MYSQL vom Remote-Server aus verbinden

Das ist aber keine gute Idee. Wenn Sie von einem anderen Remote-Server aus auf die Datenbank zugreifen möchten, platzieren Sie eine Datei mit einem gewissen htpasswdSchutz oder einem Authentifizierungsmodul auf Ihrer Site.

Wenn Sie Daten eines MySQL-Servers auf einen anderen Server übertragen möchten, müssen Sie die Anforderungen genau einhalten ...

Wenn es nur um die Datensynchronisation geht, entscheiden Sie sich für DB-Server-Konzepte ...

Vijay
quelle
0

Der wahrscheinliche Schuldige, den die Leute oft vergessen, ist:

mysql> GRANT ALL ON foo.* TO bar@'123.456.789.123' IDENTIFIED BY 'PASSWORD';

Dieser Schritt ist erforderlich, um eine Verbindung vom Computer 123.456.789.123 herstellen zu können. Weitere Informationen und eine vollständigere Anleitung finden Sie unter Holicreatures Link.

MatsT
quelle
Die Berechtigung gibt einen anderen Fehlercode an.
0

Ich hatte genau das gleiche Problem bei der Kommunikation zwischen einer MSSQL Server-Datenbank auf einem (Win2008) Server und einer MySQL-Datenbank auf einem anderen.

Ich hatte bereits vor einigen Jahren eine ODBC-Verbindung zwischen einem MSSQL-Server und dem MySQL-Server hergestellt. In erster Linie, damit ich ein Linked Server-Objekt auf dem MSSQL Server erstellen kann.

Beim Versuch, eine ODBC-Verbindung von einem anderen Server herzustellen, wird der folgende Fehler angezeigt:

Connection Failed: [HY000] [MySQL][ODBC 5.1 Driver]Can't Connect to MySQL server on 'XXX.XXX.XX.XX' (10060).

Nachdem ich einige der Vorschläge in den hier gefundenen Antworten befolgt hatte, entschied ich mich, die Firewall-Regeln auf dem (Win2008) Server zu überprüfen, auf dem MySQL gehostet wird.

Ich hatte eine eingehende Regel eingerichtet, nach der der gesperrte Port 3306 nur über eine Liste von IP-Adressen zugänglich ist. Nachdem ich die IP meines neuesten Servers zur Liste hinzugefügt hatte, konnte ich eine Verbindung herstellen.

Armaitus
quelle