Las versiones de MySQL número 4.1 y superiores utilizan un protocolo de autentificación basado en un algoritmo de hash de la clave que es incompatible con el que se utiliza en los clientes anteriores. Si actualiza su servidor a 4.1, los intentos de conectarse a él desde un cliente más viejo pueden fallar con el siguiente mensaje:
shell> mysql Client does not support authentication protocol requested by server; consider upgrading MySQL client
Para resolver este problema, debería utilizar alguno de los siguientes métodos:
Actualizar todos los programas clientes para que utilicen la librería de cliente 4.1.1 o posterior.
Cuando se conecte al servidor con un programa cliente anterior al 4.1, utilice una cuenta que todavía mantenga una clave al estilo pre-4.1.
Reestablezca la clave al estilo pre-4.1 para cada usuario que necesite
utilizar un programa cliente anterior a la versión 4.1. Esto puede hacerse
utilizando la sentencia SET PASSWORD y la función
OLD_PASSWORD():
mysql> SET PASSWORD FOR
-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
Una alternativa es utilizar UPDATE y
FLUSH PRIVILEGES:
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
-> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;
Sustituya la clave que quiera utilizar por
“newpwd” en los ejemplos precedentes.
MySQL no puede retornar la clave original, así que es necesario introducir
una clave nueva.
Indique al servidor que utilice el algoritmo de hashing de claves antiguo:
Inicie mysqld con la opción
--old-passwords.
Asigne una clave con formato antiguo a cada cuenta que tenga su clave actualizada al formato más largo de la versión 4.1. Puede identificar estas cuentas con la siguiente consulta:
mysql> SELECT Host, User, Password FROM mysql.user
-> WHERE LENGTH(Password) > 16;
Para cada registro de cuentas que se muestre en la consulta, utilice
los valores de Host y User
y asigne una clave utilizando la función OLD_PASSWORD()
y SET PASSWORD o
UPDATE, tal como se ha explicado previamente.
Nota: En PHP, la extensión
mysql no soporta el nuevo protocolo de autentificación
en MySQL 4.1.1 y superior. Esto es así independientemente de la versión de PHP
utilizada. Si desea poder utilizar la extensión mysql
con MySQL 4.1 seguir alguna de las indicaciones explicadas arriba para
configurar MySQL con clientes antiguos. La extensión mysqli
(que significa "MySQL mejorado" - "MySQL Improved"; nueva en PHP 5)
es compatible con el nuevo algoritmo de hashing mejorado
empleado en MySQL 4.1 y superiores, y sin ninguna configuración especial
necesaria que deba hacerse para utilizar esta nueva librería cliente de MySQL
para PHP. Para más información sobre la extensión mysqli
consulte http://php.net/mysqli.
For additional background on password hashing and authentication, Consulte Sección 5.6.9, “Hashing de contraseñas en MySQL 4.1”.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.
