- Eliminar o comentar old_passwords =1 en my.cnf
Reinicie MySQL. Si no lo hace, MySQL seguirá usando el formato de contraseña antiguo, lo que significa que no podrá actualizar las contraseñas usando la función hash PASSWORD() incorporada.
Los hashes de contraseña antiguos tienen 16 caracteres, los nuevos tienen 41 caracteres.
-
Conéctese a la base de datos y ejecute la siguiente consulta:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
Esto le mostrará qué contraseñas están en el formato anterior, por ejemplo:
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+
Observe aquí que cada usuario puede tener varias filas (una para cada especificación de host diferente).
Para actualizar la contraseña de cada usuario, ejecute lo siguiente:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
Finalmente, vacíe los privilegios:
FLUSH PRIVILEGES;
Fuente:Cómo arreglar "mysqlnd no puede conectarse a MySQL 4.1+ usando autenticación antigua" en PHP5.3