MySQL-PHP-Inkompatibilität: Behebung des mysteriösen Fehlers
Beim Herstellen einer Verbindung zu einer entfernten MySQL-Datenbank über PHP 5.3.0 können Benutzer auf ein Rätsel stoßen Fehler, der zu einer fehlgeschlagenen Verbindung führt. Die Warnmeldungen weisen typischerweise auf eine Nichtübereinstimmung der erwarteten Länge des OK-Pakets und einen veralteten Authentifizierungsmechanismus hin.
Bei der Untersuchung wurde festgestellt, dass das zugrunde liegende Problem auf die Passwortlänge des MySQL-Kontos zurückzuführen ist. Wenn das Passwort 16 Zeichen lang ist, handelt es sich wahrscheinlich um einen alten Passwort-Hash, der nicht mit dem von PHP 5.3.0 verwendeten mysqlnd-Treiber kompatibel ist.
Um dieses Problem zu beheben, setzen Sie das Passwort für das betroffene MySQL-Konto mit a zurück Neues. Dies kann durch Ausführen der folgenden SQL-Anweisung erfolgen:
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')
Als mögliche Alternative prüfen Sie, ob der MySQL-Server so konfiguriert ist, dass er standardmäßig alte Passwörter verwendet oder erstellt. Dies kann durch eine Untersuchung der Servereinstellungen überprüft werden. Darüber hinaus liefert die Ausführung der folgenden Abfrage auf dem problematischen Server weitere Erkenntnisse:
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username'
Ersetzen Sie „Benutzername“ durch den tatsächlichen Kontonamen, der in mysql_connect() verwendet wird. Die zurückgegebenen Werte geben die Länge und das erste Zeichen des Passworts an und liefern weitere Informationen über die Grundursache des Fehlers.
Das obige ist der detaillierte Inhalt vonWarum kann ich mit PHP 5.3.0 keine Verbindung zu meiner Remote-MySQL-Datenbank herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!