mysqlnd mysql_connect_Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot conne

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;

php更新5.3版本后,在连接mysql数据库的时候会报如上错误

问题的核心在于:mysql可能仍使用旧的密码加密方式,加密后的密码为16位字符串,而为了安全,php5.3的mysql连接库并不支持

在解决问题之前我们来看一下mysql的旧的密码长度

mysql> SELECT LENGTH(PASSWORD(‘xyz’));

得到的结果应该是16

解决方法:

mysql> SET old_passwords = 0;

mysql> UPDATE mysql.user SET password = PASSWORD(‘密码’) WHERE

user = ‘帐号’;

mysql> FLUSH PRIVILEGES;

说明:

1、不使用旧的密码加密方法

2、更改所有用户密码

3、FLUSH PRIVILEGES 后不需要重启mysql服务即可使用修改的密码

ps:

如果使用php5.2或者更低的脚本,你需要移除my.cnf文件中的old-passwords=1

最后

mysql> SELECT LENGTH(Password) FROM mysql.user WHERE User =

‘帐号’;

查看密码的长度,这个时候为41位,而旧的密码加密方式生成的密码长度是16位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值