Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine PHP 5.3.0-Verbindung zu einer älteren MySQL-Datenbank fehl, wenn „OK-Paket 6 Bytes kürzer als erwartet' ist?
MySQL PHP-Kompatibilitätsproblem
Beim Herstellen einer Verbindung zu einer Remote-MySQL-Datenbank von einem lokalen WAMP-Server, auf dem PHP 5.3.0 ausgeführt wird, tritt ein Fehler auf:
Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected. PID=5880 in ... Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication in ...
Dieses Problem tritt normalerweise auf, wenn eine Verbindung zu einer älteren MySQL-Datenbank (z. B. Version 5.0.22) hergestellt wird, jedoch nicht zu einer neueren (z. B. Version 5.0.45).
Ursache:
Das Problem tritt auf, wenn das verwendete MySQL-Konto einen alten 16-stelligen Passwort-Hash hat.
Lösung:
Um das Problem zu beheben, setzen Sie das Passwort für das problematische Konto zurück, um ein modernes Passwortformat zu verwenden. Führen Sie die folgende Abfrage in einem MySQL-Client aus:
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword');
Zusätzliche Informationen:
Um zu überprüfen, ob der Passwort-Hash tatsächlich alt ist, führen Sie die folgende Abfrage für den älteren aus MySQL-Server (Version 5.0.22):
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username';
Wenn das Feld „Länge“ 16 und das Feld „Teilzeichenfolge“ ein „*“-Zeichen zurückgibt, ist der Passwort-Hash alt.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine PHP 5.3.0-Verbindung zu einer älteren MySQL-Datenbank fehl, wenn „OK-Paket 6 Bytes kürzer als erwartet' ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!