Después de actualizar un servidor PHP de PHP 5.3.3 a PHP 5.6.x, trabajando con MySQL Server 5.1.x en un cuadro simple de CentOS 6.x de 64 bits, hubo algunas aplicaciones web nuevas que mostraban este error de conexión de mysqlnd: mysqlnd no puede conéctese a MySQL 4.1+ usando la antigua autenticación insegura
Este fue el error completo y exacto:
mysqlnd no puede conectarse a MySQL 4.1+ usando la antigua autenticación insegura. Utilice una herramienta de administración para restablecer su contraseña con el comando SET PASSWORD =PASSWORD('su_contraseña_existente'). Esto almacenará un valor hash nuevo y más seguro en mysql.user. Si este usuario se usa en otros scripts ejecutados por PHP 5.2 o anterior, es posible que deba eliminar el indicador de contraseñas antiguas de su archivo my.cnf
Esto sucede porque el nuevo cliente mysqlnd php se niega a trabajar con contraseñas de estilo antiguo de MySQL. Por lo tanto, incluso si tiene old_passwords=1, esto no funcionará para estas nuevas aplicaciones web, que requieren una seguridad de hash de contraseña más fuerte.
¿Cómo puedo solucionar el error mysqlnd no puede conectarse a MySQL 4.1+ usando la antigua autenticación insegura?
Este error se puede solucionar fácilmente si sigue los siguientes pasos:
Edite el archivo de configuración principal de MYSQL:
nano -w /etc/my.cnf
Cambiar:
old_passwords=1
a
old_passwords=0
Aplicar los cambios:
service mysqld restart
Conéctese a la consola MySQL como root:
mysql -u root -p
Ahora restablezca la contraseña de usuario para usar el nuevo hash:
SET PASSWORD FOR 'mysqluser'@'localhost'=PASSWORD('passwordhere'); flush privileges;
Reemplace 'mysqluser' y 'passwordhere' con su nombre de usuario y contraseña reales.
Ahora regrese a /etc/my.cnf y revierta los cambios realizados anteriormente, configure:
old_password=1
Reinicie MySQL para aplicar los cambios:
service mysqld restart
Listo, ahora su usuario debería usar el hash de contraseña de MySQL más fuerte.
Esto se puede verificar desde la consola de MySQL usando este comando:
mysql> SELECT user, Length(Password) FROM mysql.user; +------------------+------------------+ | user | Length(Password) | +------------------+------------------+ | root | 16 | | forum_user | 16 | | user2 | 41 | | lorex | 41 | | m3user | 16 |
Si ve '41', entonces ese usuario está usando el nuevo hash y '16' significa que está usando el antiguo hash.
Listo, en este punto, su error mysqlnd no puede conectarse a MySQL 4.1+ usando la antigua autenticación insegura debería corregirse y debería poder trabajar normalmente con sus aplicaciones web.
Cómo solucionar:mysqlnd no puede conectarse a MySQL 4.1+ usando la antigua autenticación insegura was last modified:febrero 7th, 2017 by Esteban Borges