Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum erhalte ich die Fehlermeldung „OK-Paket ist 6 Bytes kürzer als erwartet', wenn ich mit PHP 5.3.0 eine Verbindung zu einer entfernten MySQL-Datenbank herstelle?

Susan Sarandon
Freigeben: 2024-11-02 10:35:02
Original
156 Leute haben es durchsucht

Why am I getting the

MySQL-PHP-Inkompatibilität: Den Verbindungsfehler und die Lösung verstehen

Beim Herstellen einer Verbindung zu einem tritt der Fehler „OK-Paket 6 Bytes kürzer als erwartet“ auf Remote-MySQL-Datenbank mit PHP-Version 5.3.0 kann ein rätselhaftes Problem sein. Um dieses Problem zu lösen, ist es wichtig, die zugrunde liegende Ursache zu verstehen und die entsprechende Lösung anzuwenden.

Der Fehler weist auf eine Inkompatibilität zwischen der lokalen PHP-Version und dem Remote-MySQL-Server hin. PHP-Versionen 5.3.0 und höher erfordern, dass MySQL-Konten über Passwörter verfügen, die mithilfe des neuen MySQL-Authentifizierungs-Plugins gehasht werden. Allerdings verwenden ältere MySQL-Versionen wie 5.0.22 möglicherweise noch die alte Authentifizierungsmethode mit 16-stelligen Passwörtern. Diese Diskrepanz führt zu dem Fehler, da PHP 5.3.0 die Antwort vom MySQL-Server nicht richtig interpretiert.

Um dieses Problem zu beheben, gibt es zwei mögliche Lösungen:

  • Setzen Sie ein neues Passwort ein: Führen Sie für das Konto, bei dem der Fehler auftritt, mit einem MySQL-Client den Befehl „SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')" aus, um ein neues gehashtes Passwort zu generieren. Dadurch wird das Passwort des Kontos auf das neue Authentifizierungsformat aktualisiert.
  • Konfigurieren Sie den MySQL-Server: Alternativ können Sie überprüfen, ob der MySQL-Server standardmäßig für die Verwendung der alten Authentifizierungsmethode konfiguriert ist. Wenn ja, können Sie die Servereinstellungen ändern, um das neue Authentifizierungs-Plugin zu erzwingen und alte Passwörter nicht zuzulassen.

Um festzustellen, ob das Konto ein altes 16-stelliges Passwort verwendet, führen Sie die Abfrage aus:

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='username'
Nach dem Login kopieren

Ersetzen Sie auf dem problematischen 5.0.22-Server „Benutzername“ durch das betreffende Konto. Wenn das Ergebnis eine Passwortlänge von 16 anzeigt und das erste Zeichen eine hexadezimale Ziffer (0-9 oder A-F) ist, deutet dies auf ein altes Passwort hin.

Wenn Sie die zugrunde liegende Ursache verstehen und die entsprechende Lösung anwenden, können Sie dies tun Beheben Sie die MySQL-PHP-Inkompatibilität und stellen Sie eine erfolgreiche Verbindung zur Remote-Datenbank her.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „OK-Paket ist 6 Bytes kürzer als erwartet', wenn ich mit PHP 5.3.0 eine Verbindung zu einer entfernten MySQL-Datenbank herstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage