您的位置:首页 > 数据库 > MySQL

mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

2011-09-28 10:55 531 查看
一个同事,用客户端可以连接mysql,用php函数就连不上了,报如下警告:

Warning:
mysql_connect() [function.mysql-connect]: Premature end of data
(mysqlnd_wireprotocol.c:554) in
path/to/the/file/where/connection/script/is/written/

Warning:
mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter
than expected in path/to/the/file/where/connection/script/is/written/

Warning:
mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to
MySQL 4.1+ using the old insecure authentication. Please use an
administration tool to reset your password with the command SET PASSWORD
= PASSWORD('your_existing_password'). This will store a new, and more
secure, hash value in mysql.user. If this user is used in other scripts
executed by PHP 5.2 or earlier you might need to remove the
old-passwords flag from your my.cnf file in
path/to/the/file/where/connection/script/is/written/

具体原因我还不是很清楚,跟old密码长度有关?先记录下来,日后研究。解决方法如下:

SET old_passwords = 0;
UPDATE mysql.user SET Password = PASSWORD('testpass') WHERE User = 'testuser' limit 1;
SELECT LENGTH(Password) FROM mysql.user WHERE User = 'testuser';
FLUSH PRIVILEGES;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐