PHP 5.3开始使用MySqlND作为默认的MySql访问驱动,而且从这个版本开始将不再支持使用旧的用户接口链接Mysql了,你可能会看到类似的提示:

#2000 - mysqlnd cannot connect to MySQL 4.1+ using old authentication

解决问题的方法不是调整PHP,而是检查你的Mysql,你需要确保两件事:

  • 你使用的Mysql是4.1+以上版本,4.1以前的版本只支持使用老的16位密码存储
  • 你准备用于连接的数据库帐号使用的MySql的新密码格式(41位的数据)

解决问题2的方法是重新设置账户的密码,并确保使用的标准Password()函数设置账户密码,相关指令如下:

-- 选择系统库
USE `mysql`
-- 显示当前的用户和密码,注意新的的密码格式应该是41位的加密字符,老的是16位的
SELECT `user`,`password` from `user`;

-- 更新指定的用户的密码,注意使用函数 password()
-- 有时针对一些特殊需要,你可以使用old_password()函数来建立一个或几个向下兼容的数据库账户
UPDATE `user` SET `password`=password('newpassword') WHERE `user`='UserName';

-- 刷新MySql权限库
FLUSH PRIVILEGES;

-- 最后别忘记了,MySql的命令行连接方式是:
MySql -u username@host -p password

(74)

分类: 深入PHP

5 条评论

发表评论

电子邮件地址不会被公开。