- Ta bort eller kommentera old_passwords =1 i my.cnf
Starta om MySQL. Om du inte gör det kommer MySQL att fortsätta använda det gamla lösenordsformatet, vilket kommer att innebära att du inte kan uppgradera lösenorden med den inbyggda PASSWORD()-hashfunktionen.
De gamla hasharna för lösenord är 16 tecken, de nya är 41 tecken.
-
Anslut till databasen och kör följande fråga:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
Detta kommer att visa dig vilka lösenord som är i det gamla formatet, t.ex.:
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+
Observera här att varje användare kan ha flera rader (en för varje värdspecifikation).
För att uppdatera lösenordet för varje användare, kör följande:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
Slutligen, spola privilegier:
FLUSH PRIVILEGES;
Källa:Hur man åtgärdar "mysqlnd kan inte ansluta till MySQL 4.1+ med gammal autentisering" på PHP5.3