„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

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?

Veröffentlicht am 09.11.2024
Durchsuche:208

Why am I getting the \

MySQL PHP-Inkompatibilität: Verständnis des Verbindungsfehlers und der Lösung

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 beheben, 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:

  • Legen Sie ein neues Passwort fest: Verwenden Sie für das Konto, bei dem der Fehler auftritt, einen MySQL-Client, um den Befehl „SET PASSWORD FOR 'username'@'hostmask' =“ auszuführen PASSWORD('thepassword')", 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'

Ersetzen Sie auf dem problematischen 5.0.22-Server „username“ 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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3