今天配置一个开发环境,安装好MySQL 4.1.18和PHP 4.4.2后,就安装了phpMyAdmin来管理MySQL,可以phpMyAdmin怎么也连不上MySQL,报#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client。phpMyAdmin还说是用户名密码的问题,这就奇怪了root用户名密码肯定没有问题啊!而且通过命令行连接没有问题。仔细查看配置文件,没有问题。于是去搜了一下,找到这个解决方法,上面写的非常清楚,立竿见影。
先用root登录MYSQL服务器,执行
mysql>set password for user1@"localhost"=old_password('yourPassword');
原因是因为你使用的mysql服务器版本中使用了新的密码验证机制,这需要客户端的版本要在4.0以上,原来的密码函数被改为old_password();,这样使用password()生成的密码在旧的版本上的客户端就不好使了,而PHP中的MYSQL客户端都是3.23的(当然,mysqli的扩展除外),问题就在这了。