PHP 5.4 PDO konnte mit der alten unsicheren Authentifizierung keine Verbindung zu MySQL 4.1+ herstellen

Ich weiß, dass es eine Tonne ähnlicher Fragen gibt, in der Tat habe ich alle (9) von ihnen gelesen.

Keiner von ihnen löst jedoch mein Problem.

Ich habe ein Shared-Hosting-Paket (das Minimum). In meinem Paket sind der Domänenname und eine separate IP-Adresse enthalten, unter der der MySQL-Server gehostet wird. Für die Entwicklung verwende ichhttp://localhost/ mit dem Entwicklungsserver von PHP 5.4, und ich verwende den MySQL-Server, den ich in meinem Hosting-Paket bekomme.

Das Problem tritt nur auf meinem PC auf, weil ich PHP 5.4 installiert habe, aber mein Webhost PHP 5.2.17 installiert hat und kein Upgrade durchführt. Der MySQL-Server läuft unter MySQL 5.1.50.

Zum Glück verfügt phpMyAdmin über eine integrierte Funktion zum Ändern des Passworts.

Es gibt zwei Hash-Optionen in phpMyAdmin, um ein Passwort zu ändern:

MySQL 4.1+MySQL 4.0 kompatibel

Ich habe das Passwort mit der Option MySQL 4.1+ geändert und bestätigt, dass das Update erfolgreich war.

Das Profil wurde aktualisiert.SET PASSWORD = PASSWORD( '***' )

Wenn ich jedoch diese Abfrage durchführe:

<code>SELECT @@global.old_passwords, @@session.old_passwords, Length(PASSWORD('abc'));
</code>

Es sagt mir, dass die Passwortlänge immer noch 16 ist.

<code>1     1     16
</code>

Und so bleibt das Problem bestehen.

Keine Verbindung mit der Datenbank möglich. SQLSTATE [HY000] [2000] mysqlnd kann mit der alten unsicheren Authentifizierung keine Verbindung zu MySQL 4.1+ herstellen. Verwenden Sie ein Administrationstool, um Ihr Passwort mit dem Befehl SET PASSWORD = PASSWORD ('your_existing_password') zurückzusetzen. Dadurch wird ein neuer und sicherer Hash-Wert in mysql.user gespeichert. Wenn dieser Benutzer in anderen Skripten verwendet wird, die von PHP 5.2 oder früher ausgeführt werden, müssen Sie möglicherweise das Flag für alte Kennwörter aus Ihrer my.cnf-Datei entfernen

Ich habe auch versucht, diese Abfragen zu machen, wenn ich mit dem DBO-Benutzer in phpMyAdmin angemeldet bin:

<code>SET SESSION old_passwords=0; 
[phpMyAdmin reloads to the home screen, but the value remains = 1]

SET GLOBAL old_passwords = 0;
#1227 - Access denied; you need the SUPER privilege for this operation

FLUSH PRIVILEGES;
#1227 - Access denied; you need the RELOAD privilege for this operation
</code>

Dies widerspricht den Angaben im Menü des Webhosts zum Einstellen des DBO-Benutzers:

Datenbankeigentümer
Wenn Sie eine neue Datenbank erstellen, müssen Sie einen DBO-Benutzer (Database Owner) angeben, der über Folgendes verfügt
voller Administratorzugriff auf die Datenbank.

Muss ich das mit meinen Webhosts aufnehmen? Oder kann es von meinem DBO-Benutzer gelöst werden? Andernfalls kann dies in PHP umgangen werden? (da es mit PHP 5.2.17 aber nicht mit PHP 5.4 funktioniert)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage