De la versión 4.1 de MySQL en adelante ha cambiado, además de muchas otras cosas, la forma identificarse, el protocolo de autenticación. Esto hace que los clientes de MySQL con librerías anteriores a la 4.1, como es el caso de algunas versiones antiguas de PHP, no puedan conectar. Si al intentar conectar nos topamos con un error como el siguiente, entonces tenemos una librería vieja:
PHP Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /path/path/file.php on line X
Hay varias formas de solucionar este problema. La solución más rápida es dejar un usuario sin contraseña y acceder a las bases de datos a través de él, pero no parece muy buena si queremos conservar la seguridad de nuestro servidor MySQL.
Otra solución es decirle a MySQL que utilice el sistema antiguo de identificación para cierto usuario. Para ello abrimos la línea de comandos de MySQL. En windows, Inicio > Programas > MySQL > MySQL Server 4.1 > MySQL Command Line Shell. En linux teclea mysql en la línea de comandos para entrar en la shell del gestor de bases de datos. Asegúrate de que el usuario con el que conectas a la línea de comandos de MySQL tenga permisos para modificar las cuentas de usuario.
Una vez tenemos el prompt de mysql en la línea de comandos haremos lo siguiente:
mysql> SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('contraseña');
Debemos sustuir "contraseña" por la contraseña que queramos y "root" por el usuario deseado.Con esta sentencia haremos que el usuario root en localhost pueda conectar con el cliente antiguo de MySQL.
Lo ideal sería utiilzar la biblioteca mysqli en PHP que es mucho más completa que la actual y permite aprovechar todas las características de MySQL 4.1. O también podemos instalar una versión actualizada de las librerías clásicas de mysql. Si tu servidor está actualizado, con PHP5, como debería ser, ya no tendrás estos problemas.
Redactado por Nenillo