今天用Navicat for MySQL 直接修改的mysql root的密码,但是却提示链接不到数据库了~
用的是dedecms一直以为是自己的common.inc.php的配置文件出错,重新保存utf-8格式,重新上传,直接从服务重启mysql,重启IIS还是不行~
自己又随便写了个test.php链接数据库测试,结果显示:
Could not 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
说明不是,配置文件的问题,是修改密码的问题,把如上问题放到百度:
old_passwords = 1
//old_passwords = 1为16位
//所以这里要先
//SET old_passwords = 0;
//这样使新密码的长度也变成41位
mysql> SELECT Length(PASSWORD(‘xyz’));
结果如下图:很明显16位
The old password hashes are 16 characters, the new ones are 41 characters.
mysql> SELECT user, Length(`Password`) FROM `mysql`.`user`;

UPDATE mysql.user SET Password = PASSWORD(‘password’) WHERE user = ‘username’;
如图:
FLUSH PRIVILEGES;
最后再查询一下
mysql> SELECT user, Length(`Password`) FROM `mysql`.`user`;
结果如下图:(变成41位了,成功)
成功后退出exit
最后重新启动一下mysql
service mysqld restart
ok
解决问题~
mysql; 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;