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.