it-swarm.com.de

Verbindung zum MySQL-Server bei 'Lesen des ersten Kommunikationspakets' verloren

Ich bekomme einen Fehler:

"Verbindung zum MySQL-Server wurde beim 'Lesen des ersten Kommunikationspakets verloren, Systemfehler: 0"

während ich meine db verbinden werde.

Wenn ich localhost verwende, funktioniert alles einwandfrei ... Wenn ich jedoch meine Live-IP-Adresse wie unten verwende, wird ein Fehler angezeigt:

mysql_connect("202.131.xxx.106:xxxx", "xxxx", "xxxxx") or die(mysql_error());
100
Rikesh

Jemand hier schlägt vor, dass es sich um ein Firewall-Problem handeln könnte:

Ich hatte gerade dieses Problem und stellte fest, dass es meine Firewall war. Ich verwende PCTools Firewall Plus und erlaubte keinen vollständigen Zugriff auf MySQL. Einmal habe ich geändert, dass es gut war. Hoffentlich hilft das.

Könnte es das sein?

Jemand here weist darauf hin, dass der MySQL-Server an die Loop-Back-IP (127.0.0.1/localhost) gebunden ist. Dadurch wird die Verbindung von "außen" effektiv abgeschnitten.

Wenn dies der Fall ist, müssen Sie das Skript auf den Webserver hochladen (auf dem wahrscheinlich auch der MySQL-Server ausgeführt wird) und den Server-Host als 'localhost' belassen.

84
Thomas Daugaard

Öffnen Sie die MySQL-Konfigurationsdatei my.cnf und versuchen Sie, "bind-address" zu finden. Ersetzen Sie hier die Einstellung (127.0.0.1 OR localhost) durch Ihre Live-Server-IP (die IP-Adresse, die Sie in der Funktion mysql_connect verwenden).

Dies wird das Problem definitiv lösen.

Vielen Dank

37
intekhab rizvi

1) Remote-Verbindung zu MySQL zulassen . Datei bearbeiten:

>Sudo nano /etc/mysql/my.cnf

Kommentarzeile:

#bind-address       = 127.0.0.1

Starten Sie MySQL neu:

>Sudo service mysql restart

2) Benutzer für Remote-Verbindung erstellen.

>mysql -uroot -p

CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';

GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';

3) In meinem Fall muss ich mit Ubuntu eine Fernverbindung zwischen Windows und VirtualBox herstellen. Also muss ich Port 3306 in iptables zulassen:

>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
20
sNICkerssss

Hatte dieses Problem beim Einrichten eines neuen Slave-Servers. Es wurde festgestellt, dass die Slave-Server-IP-Adresse in der /etc/hosts.allow-Datei des Master-Servers fehlte. Die IP-Adresse wurde hinzugefügt und ich konnte mich mit dem Master-Server verbinden.

Beachten Sie, dass ich hosts.allow und hosts.deny zur Zugriffssteuerung verwende. 

15
Mark

Ich hatte dieses Problem und es war der frühere sys-Administrator, der den Port geändert hat, auf dem MySQL läuft. MySQL Workbench hat versucht, eine Verbindung zum Standard 3306 herzustellen, der Server lief jedoch unter 20300.

7
user3347295

Das Problem in meinem Fall war, dass MySQL nur an die lo on linux gebunden war. Um das Problem zu lösen, habe ich my.cnf (gefunden unter /etc/mysql/my.cnf) bearbeitet, das die Zeile bind-address entfernt = 127.0.0.1

dadurch kann sich mysql an eine beliebige Netzwerkschnittstelle binden

5
Renato Mendes

Dieser Fehler ist bei dem Versuch aufgetreten, über MySQL Workbench 6.3 eine Verbindung zu Google Cloud SQL herzustellen.

Nach ein wenig Recherche fand ich heraus, dass meine IP-Adresse vom Internetanbieter geändert wurde und er nicht in die Cloud SQL aufgenommen wurde.

Ich autorisierte es und machte mich wieder an die Arbeit.

5
Paulo Occaso

Der Fehler bedeutet, dass keine Antwort von dem Port empfangen wurde, an dem der Server erwartet wurde. Die Ursachen reichen von der Kontaktaufnahme mit dem falschen Computer (aus einer Reihe von Gründen) bis zum Server, der sich nicht am erwarteten Port befindet.

Prüfen Sie in /etc/mysql/my.cnf, an welchen Port Ihr Server gebunden ist. Stimmt das mit dem überein, was in Ihrer connect-Anweisung steht. Wenn sie übereinstimmen, versuchen Sie, eine Verbindung mit mysql vom Server selbst und über die Befehlszeile des Computers herzustellen, auf dem Sie den Client ausführen. Wenn dies von einem Ort und nicht von einem anderen Ort aus funktioniert, liegt möglicherweise ein Problem mit der Konfiguration von Firewall/Router vor.

3
ClearCrescendo

Ich habe gerade MySQL in einer Windows-Box eingerichtet. Ich habe die Fehlermeldung des OP erhalten, als ich versuchte, mit dem Navicat MySql-Client auf derselben Box eine Verbindung herzustellen. Ich musste 127.0.0.1 als Host angeben, und das bekam es.

localhost oder die tatsächliche IP-Adresse des Servers funktionierte nicht.

3
Paul B

Das Problem für mich war, dass DNS-Abfragen von der FW innerhalb des Subnetzes blockiert wurden. Die Lösung bestand darin, DNS-Lookups in MySQL zu deaktivieren.

3
Bill Grady

Das Problem war für mich ziemlich dumm.

Ich hatte das gleiche Problem auf der AWS EC2 Ubuntu-Maschine (MariaDB ist vorerst lokal installiert), also habe ich versucht, SSH-Tunneling durchzuführen, und hatte das gleiche Problem. Also habe ich versucht, über Terminal ssh Tunnel:

ssh -L13306:127.0.0.1:3306 [email protected] -i my/private/key.pem

Und es hat mir gesagt:

Bitte melden Sie sich als Benutzer "ubuntu" und nicht als Benutzer "root" an.

Ich habe den ssh-Benutzer von root zu ubuntu gewechselt, genau wie meine ssh-config, und es hat einfach funktioniert.

Überprüfen Sie also Ihren SSH-Verbindungsbenutzer.

Ich habe dies überwacht, also eine halbe Stunde meiner Zeit, also hoffe ich, dass dies für Sie nützlich sein wird.

2
Arda

in meinem Fall hatte ich ALL: ALL in hosts.deny. Ändern Sie dies auf ALL: PARANOID hat mein Problem beim Verbinden über SSH gelöst

2
domoarigato

In derselben Ausgabe lief Bind Address hin und her ohne Erfolg. Lösung für mich war Flush Privilegien

mysql> FLUSH PRIVILEGES;
2
Marko Bajlovic

Beim Herstellen der Verbindung mit der MySQL-Workbench ist genau dieser Fehler aufgetreten. So habe ich es behoben. In meiner Konfigurationsdatei /etc/my.cnf wurde der Wert für die Bindungsadresse auf die IP-Adresse des Servers festgelegt. Dies musste zum Einrichten der Replikation durchgeführt werden. Wie auch immer, ich habe es gelöst, indem ich zwei Dinge tat:

  1. erstellen Sie einen Benutzer, der zum Herstellen einer Verbindung von der Bindungsadresse in der my.cnf-Datei verwendet werden kann E.g. 

    CREATE USER 'Benutzername' @ 'Bindungsadresse' IDENTIFIZIERT DURCH 'Passwort'; ALLE PRIVILEGES AUF SCHEMA-Namen. * TO 'Benutzername' @ 'Bindungsadresse'; FLUSH PRIVILEGES;

  2. Ändern Sie den MySQL-Hostnamenwert in den Verbindungsdetails in MySQL-Workbench so, dass er der Bindungsadresse entspricht

2
Tishan

Für mich wurde die Konfigurationsdatei gefunden "/etc/mysql/mysql.conf.d/mysqld.cnf", indem die Bindeadresse auskommentiert wurde.

Wie wir hier sehen können: Anstelle des Überspringens von Netzwerken wird jetzt standardmäßig nur noch auf .__ gehört. localhost ist kompatibler und nicht weniger sicher.

1
scott

Bei mir hat die Einstellung bind-address = 0.0.0.0 in mysql/my.cnf funktioniert. Grundsätzlich hört er dann auf alle Adressen (aber noch einen Port).

Vergessen Sie nicht, Ihren Server neu zu starten: systemctl restart mysql

1
Jahanzeb Khan

Ich hatte gerade das gleiche Problem, aber in meinem Fall habe ich es mit gelöst

dienst Mysqld Start

1
GunSky7

Bei der Remote-Verbindung zu Mysql erhielt ich den Fehler . Diese Warnung hatte ich in /var/log/mysqld.log:

[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution

Ich habe gerade diese Zeile zu /etc/hosts-Datei hinzugefügt:

X.X.X.X some_name

Problem gelöst! Die Verwendung von skip-name-resolve hat bei der Verbindung zu MySQL zu Fehlern in der lokalen App geführt.

0
Amin Sh

Ich hatte einen ähnlichen Fehler (Verbindung zu MYSQL auf AWS über MYSQL Workbench). Früher hatte ich eine gute Verbindung und plötzlich funktionierte es nicht mehr und würde einfach nicht mehr funktionieren. Meine Verbindung war über SSH durch eine Schlüsseldatei geschützt.

Es stellte sich heraus, dass ich eine Zeitüberschreitung hatte. Also habe ich das Zeitlimit für die SQL-Verbindung auf 30 Sekunden erhöht (von Standard 10) und war wieder einsatzbereit. Dinge zu versuchen (wenn Sie in einem ähnlichen Setup sind)

  1. Können Sie direkt vom Terminal auf den Server ssh (erkennt Probleme mit Schlüsseldateiberechtigungen usw.)?
  2. Können Sie dann über ein Terminal eine Verbindung zu MySQL mit demselben Benutzer/pwd herstellen, indem Sie etwas wie mysql -u [username] -p [database] verwenden? Dies prüft auf Benutzerrechte usw.
  3. wenn beide funktionieren, sind Ihre Parameter nicht das Problem und möglicherweise das gleiche Timeout-Problem wie ich.
0
Burges K

Lese- und Schreibrechte für Datenbankverzeichnisse, auch ein Problem, das ich gefunden habe ... Stellen Sie nur sicher, dass Ihre Anwendung in der Lage ist, Dateien auf DB-Speicherort abzurufen. Versuchen Sie es mit chmod 777.

0
Abbas

Wenn in Ihrer Konfigurationsdatei keine Bindungsadresse vorhanden ist und mysql auf der AWS-Instanz gehostet wird, überprüfen Sie bitte Ihre Sicherheitsgruppe. Unter idealen Bedingungen sollten die eingehenden Regeln alle Verbindungen von Port 3306 akzeptieren, und die ausgehende Regel sollte auf alle gültigen IPs antworten.

0
Aman Bansal

Ich versuche, mein DB Docker-Container auf Ubuntu 18.04, das gleiche Problem zu verbinden.

Überprüfen Sie zuerst Ihr Gerät, indem Sie nmcli dev ausführen, um zu überprüfen, ob docker0 mit dem Gerät verbunden ist.

Wenn keine Verbindung besteht, versuchen Sie, den Docker-Dienst neu zu starten:

Sudo service docker restart

0
Belter

Ich habe unten drei Schritte gemacht und dann für mich gearbeitet.

  1. bind-address = "YOUR MACHINE IP" in my.cnf-Datei unter /etc/my.cnf

  2. Starten Sie den Dienst mit folgendem Befehl neu: service httpd restart

  3. GRANT ALL PRIVILEGES ON yourDB.* TO 'username'@'YOUR_APPLICATION_IP' IDENTIFIED BY 'YPUR_PASSWORD' WITH GRANT OPTION;

0
Kamal Oberoi

Ich hatte ein identisches Problem. Um das Problem zu beheben, habe ich Host von localhost: 3306 in localhost geändert. Daher kann ein Fehler auftreten, wenn Sie einen nicht ordnungsgemäßen Anschluss für die Verbindung festlegen. Es ist besser, die Standardeinstellung beizubehalten. 

0
Barto

Ein Grund mehr ...

Ich bin auf einen Ubuntu-Server gestoßen, bei dem alles angepasst wurde und aufgrund dieses Fehlers keine Verbindung hergestellt werden konnte.

Diese Einstellung befand sich in /etc/ssh/sshd_config

PermitTunnel no

Nach dem Umdrehen in

PermitTunnel yes

Ich konnte eine Fernverbindung zu meiner MySQL-Datenbank herstellen

0
lewis4u

Ich hatte das gleiche Problem. Ich habe nachgesehen und versucht, AllowTcpForwarding Yes einzustellen, aber es fehlte in meiner sshd_config, also keine Hilfe. Ich habe weder sshd_config noch my.cnf geändert. Stellen Sie sicher, dass der ssh-HostnameUND NICHTmit dem mysql-Hostnamen identisch ist (verwenden Sie localhost).

Wählen Sie in der Workbench +, um eine neue Verbindung hinzuzufügen, und legen Sie Folgendes fest:

  • verbindungsmethode: Standard TCP/IP über SSH  
  • SSH-Hostname: 192.168.0.50:22 (Ersetzen Sie die IP-Adresse und den Port des Remote-SSH-Servers (optional).) 
  • SSH-Benutzername: sshuser  
  • Sie können ein Kennwort festlegen oder an der Eingabeaufforderung hinzufügen
  • MySQL-Hostname: localhost oder 127.0.0.1
  • MYSQL Server-Port: 3306
  • Sie können ein Kennwort festlegen oder an der Eingabeaufforderung hinzufügen

Testverbindung. Es sollte erfolgreich sein, dann klicken Sie auf OK.Viola!

0
Reegan Ochora

Die Apache-Firewall blockiert die IP-Adresse. Um Zugriff zu gewähren, verwenden Sie diese Befehle:

firewall-cmd --permanent --zone = vertrauenswürdig --add-source = YOUR_IP/32

firewall-cmd --permanent --zone = vertrauenswürdig --add-port = 3306/tcp

firewall-cmd --reload

0
Rodniko