Resolver problemas con autenticación en MySQL
Es probable que al utilizar una versión reciente de MySQL (digamos 4.1.x o posterior) de pronto tengamos problemas al tratar de conectarnos debido a un problema de autenticación. El mensaje que recibimos es algo como esto:
"Client does not support authentication protocol requested by server; consider upgrading MySQL client".
(El cliente no soporta el protocolo de autenticación solicitado por el servidor; considere actualizar su cliente MySQL)
Lo que sucede es que en MySQL 4.1, los desarrolladores de MySQL actualizaron el proceso de autenticación de usuarios. El hash que forma el password se incrementó de 16 a 41 bytes con el fin de hacerlo más seguro.
El efecto de este cambio es que las versiones de clientes MySQL anteriores a la 4.1 no pueden hablar con un servidor cuya versión sea 4.1 o posterior, ya que los clientes no son capaces de darle al servidor el hash del password de la forma correcta.
Hay dos maneras de resolver este problemilla. La primera es actualizar la librería cliente como lo sugiere el mensaje de error que se nos regresa. Esto es una buena idea ya que con esto se estará usando una autenticación más segura y se tendrán los beneficios de las más nuevas librerías cliente. Los usuarios de PHP deben tener en cuenta que únicamente la librería MySQLi usa la nueva librería cliente.
La segunda forma es forzar al servidor MySQL 4.1 a que use el viejo protocolo de autenticación. Esto puede ser hecho a nivel cuenta (usuario) o a nivel servidor.
Para configurar un sola cuenta para que use el protocolo anterior, debemos poner el password usando un hash de 16 bytes con el uso de la funcion OLD_PASSWORD().
mysql> SET PASSWORD FOR 'el_usuario'@'el_servidor' = OLD_PASSWORD('el_password');
Cuando MySQL detecte un hash de 16 bytes, éste autenticará al usuario usando el protocolo anterior y los clientes serán capaces de establecer la conexión al servidor.
Para configurar a MySQL para que use el viejo esquema de autenticación a nivel servidor, hay que agregar old-passwords como una opción en el archivo de configuración de MySQL bajo la sección [mysql]. Esto hace que el servidor ponga todos los passwords usando 16 bytes, lo cual forza a utilizar el viejo esquema de autenticación. Cualquier password existente de 41 bytes necesitará ser puesto nuevamente a 16 bytes usando la sintaxis SET PASSWORD descrita anteriormente.
Autor: bluemen
http://www.mysqlhispano.com
Usuarios que han visto este tema también han visto...
- Búsquedas con Full-text y MySQL
- Tipos de tablas usadas por MySQL
- Crea sencillas gráficas con MySql
- Mini referencia de MySQL
- Gestión de usuarios con MySQL
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.