Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fehler:mysqlnd kann mit der alten unsicheren Authentifizierung keine Verbindung zu MySQL 4.1+ herstellen

  • Entfernen oder kommentieren Sie old_passwords =1 in my.cnf

Starten Sie MySQL neu. Wenn Sie dies nicht tun, verwendet MySQL weiterhin das alte Passwortformat, was bedeutet, dass Sie die Passwörter nicht mit der integrierten Hash-Funktion PASSWORD() aktualisieren können.

Die alten Passwort-Hashes haben 16 Zeichen, die neuen 41 Zeichen.

  • Stellen Sie eine Verbindung zur Datenbank her und führen Sie die folgende Abfrage aus:

    SELECT user, Length(`Password`) FROM  `mysql`.`user`;
    

Dies zeigt Ihnen, welche Passwörter das alte Format haben, z. B.:

+----------+--------------------+
| user     | Length(`Password`) |
+----------+--------------------+
| root     |                 41 |
| root     |                 16 |
| user2    |                 16 |
| user2    |                 16 |
+----------+--------------------+

Beachten Sie hier, dass jeder Benutzer mehrere Zeilen haben kann (eine für jede unterschiedliche Host-Spezifikation).

Führen Sie Folgendes aus, um das Kennwort für jeden Benutzer zu aktualisieren:

UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';

Zum Schluss Berechtigungen löschen:

FLUSH PRIVILEGES;

Quelle:So beheben Sie "mysqlnd kann keine Verbindung zu MySQL 4.1+ mit alter Authentifizierung herstellen" auf PHP5.3