问题现象,使用phpmyadmin无法连接mysql服务器,错误信息如下图:
写一个测试mysql连接的php脚本,如下
<?php
$link = mysql_connect('192.168.18.240:3306','cacti','cacti');
var_dump($link);


测试结果如下
提示大致意思是mysqlnd使用老的不安全的认证不能连接到4.1版本及以上的mysql,需要使用“SET PASSWORD = PASSWORD“命令重新设置密码,在mysql.user里会存储一个新的更安全的哈希值。如果用户使用PHP5.2或更早的版本执行脚本,可能需要从my.cnf里移除old-passwords设置项。

按照提示,我们移除这个设置项,并重设密码:
sed -i '/old_passwords/s/^/#/' /etc/my.cnf
service mysqld restart
在我们重设密码前先查看一下原来的密码
mysql -e "select password from mysql.user where user='cacti'"
+---------------------+
| password                 |
+---------------------+
| 142bb1aa1e6a5804 |
+---------------------+
现在重设密码,再次查看
mysql -e "set password for cacti = password('cacti')"
mysql -e "select password from mysql.user where user='cacti'"
+-------------------------------------------------+
| password                                                        |
+-------------------------------------------------+
| *9CDE1A09ED38FCFD4696D1AA82E4E1EE2F26270D |
+-------------------------------------------------+
明显这个密码比前面的长了

我们再次登录phpmyadmin
刷新我们编写的php脚本
欧了!