Noch eine weitere "Lost connection to mysql server at 'reading initial communication packet', system error: 0" - Problem
Wie es scheint, ein doppelter post, aber ich habe alle Lösungen gepostet in relevanten Beiträge und keiner von Ihnen arbeitete für mich. Erlaubt mir also um das problem genauer.
Ich habe einen server, wo MySQL installiert ist. Ich habe einen Benutzer X mit Passwort-P.
Wenn ich die Verbindung zum server (ssh oder so) und starte MySQL lokal (mysql --user=X --password==P
) meldet sich perfekt, und ich habe Zugriff auf alles:
mysql> show grants;
...
+------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'X'@'%' IDENTIFIED BY |
|PASSWORD 'somehash' WITH GRANT OPTION |
+------------------------------------------------------+
Nun, wenn ich gehen, um die config-Datei: (sudo vim /etc/mysql/my.cnf
) sehe ich Folgendes:
bind-address = 0.0.0.0
port = 3306
Dann gehe ich in hosts allow-Datei (sudo vim /etc/hosts.allow
) ich sehe:
mysqld: ALL
Dann gehe ich in hosts allow-Datei (sudo vim /etc/hosts.deny
): die Datei leer ist (außer für einige Kommentare).
Immer noch, wenn ich versuche zu verbinden mit MySQL-workbench habe ich das problem.
Hier ist, wie ich es mache. Ich gehe, um eine neue Verbindung hinzuzufügen, füge ich die URL, username, pass, port und ich klicken Sie auf Verbindung testen, und ich bekomme die Meldung, dass der Titel dieser Frage. Ich habe versucht, mit einem zufälligen (nicht vorhandene) Benutzer-pass-Kombination und trotzdem bekomme ich die gleiche Antwort.
Versuchte ich das auskommentieren der bind-Adresse zu, BTW. Auch der server ist in der Regel zugänglich für andere services wie PostgreSQL und so.
InformationsquelleAutor Mohammad Gharehyazie | 2015-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
nicht eine Lösung um Ihre server-firewall-Problem, aber ein workaround, wie Sie sind in der Lage, um ssh in Ihr Datenbank-server:
Können Sie versuchen, ssh-remote-port-forwarding von deinem mysql-server auf Ihrem lokalen Computer, und dann verbinden Sie den mysql-client auf dem lokalen port. Ich benutze diese Methode immer, wenn ich bin hinter einer firewall. Als bonus die Datenübertragung über diese Verbindung ist auch sehr sicher.
Zum Beispiel, wenn Sie ssh ' in der remote-Maschine mit
Dann könnte man die Einrichtung der port-Weiterleitung wie diese:
Dann können Sie mit der Datenbank verbinden, als ob Sie eine Verbindung zur Datenbank lokal (mit Hilfe der commanline mysql-client als Beispiel):
Dieser sollte dann die Eingabeaufforderung für Ihr Passwort.
Schließen der tunnel:
Lernte ich über diese Methode aus der postgres-docs.
InformationsquelleAutor Haleemur Ali
Dies ist mehr als wahrscheinlich ein firewall-Problem.
Einfachste Weg, um zu Debuggen, die auf den ersten, ist, zu versuchen, mit telnet auf den server auf port 3306 lokal und aus der Fernbedienung. MySQL sendet der version-string in Klartext, dass Sie sehen können, im inneren telnet, wenn Sie richtig angeschlossen ist.
Wenn Sie nicht bekommen, dass die string -, dann so etwas wie eine firewall ist wahrscheinlich die Verbindung blockiert.
telnet hostname 3306
von der host selbst, ich habe so etwas wie dieses:5.5.37-0ubuntu0.12.04.1USakx9Pi�:G6x{!/g;.u(mysql_native_password
. Wenn ich telnet ohne die port-Nummer, bekomme ich connection refused. So bedeutet dieses, dass es eine firewall die Verbindung blockiert?Wenn ich telnet auf den port 23 von meinem remote-windows-Rechner, bekomme ich keine Verbindung und auf port 3306, bekomme ich nur einen leeren Bildschirm.
23 ist nicht zu erwarten, aber funktionieren 3306 sollte Ihnen mehr als einen leeren Bildschirm. scheint wirklich wie eine firewall.
InformationsquelleAutor Trent Lloyd