“Client does not support authentication protocol requested by server; consider upgrading MySQL client”
… con este mensaje me sorprendio hoy mi servidor LAMP. El error no escondia demasiados comentarios simplemnte el cliente es decir PHP, no era lo suficientemente bueno como para entenderse con el servidor MySQL. Asi que lo que tocaba era… www.google.es
La solucion era facil actualizar PHP, pero el caso es que no me apetecia demasiado el cambiar el interprete de PHP, asi que busque otra solucion, mi condicion de vago me traiciona y acabe perdiendo mas tiempo en no hacer nada que el haberlo hecho… Es mas ahora estoy actualizando a PHP5, pero el caso es que no siempre se puede hacer esto, por ejemplo cuando el servidor no es nuestro, asi que dejo la solucion para los que les surga este problema..
Lo primero es saber que cliente esta instalado, esto es secillo la instrucción phpinfo() nos muestra un apartado llamado “Client API”, en el que aparece la version; en mi caso 3.x, Si este cliente se encuntra con un servidor MySQL 4.x o superior tendra un pequeño problema con el acceso a las claves, ya que el conectarse el cliente envia la clave encriptada al viejo estilo de MySQL, el cual ha cambiado en la version 4, por lo tanto no podra conectase. MySQL es un producto comercial por lo cual no puede permitirse muchos lujos a la hroa de cambiar sus metodos, por lo tando han dejado una instrucción llamada OLD_PASSWORD, que encripta la clave con el modelo viejo.
Asi que si tenemos script’s php que funcionan con un cliente 3.x y queremos acceder a una base de datos mySQL 4 debemos redefinir las claves y volverlas a grabar con el metodo antiguo, por ejemplo para el usuario root;
update user set password=OLD_PASSWORD(‘clave’) where user=’root’
o si usamos phpmyadmin usar la opcion de clave compatible con version inferior a MySQL 4