- Rimuovi o commenta old_passwords =1 in my.cnf
Riavvia MySQL. In caso contrario, MySQL continuerà a utilizzare il vecchio formato della password, il che significa che non è possibile aggiornare le password utilizzando la funzione di hash PASSWORD() incorporata.
Gli hash della vecchia password sono 16 caratteri, quelli nuovi sono 41 caratteri.
-
Connettiti al database ed esegui la seguente query:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
Questo ti mostrerà quali password sono nel vecchio formato, ad esempio:
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+
Nota qui che ogni utente può avere più righe (una per ciascuna specifica host diversa).
Per aggiornare la password per ogni utente, eseguire quanto segue:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
Infine, svuota i privilegi:
FLUSH PRIVILEGES;
Fonte:Come risolvere "mysqlnd non può connettersi a MySQL 4.1+ usando la vecchia autenticazione" su PHP5.3