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

mysql旧版本密码长度问题

2013-08-19 11:34 169 查看
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 fileCould not select database

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位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: