问题现象,使用phpmyadmin无法连接mysql服务器,错误信息如下图:
![](../p_w_upload/201301/170508631.png)
写一个测试mysql连接的php脚本,如下
<?php
$link = mysql_connect('192.168.18.240:3306','cacti','cacti');
var_dump($link);
$link = mysql_connect('192.168.18.240:3306','cacti','cacti');
var_dump($link);
测试结果如下
![](../p_w_upload/201301/171511538.png)
提示大致意思是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 |
+---------------------+
+---------------------+
| password |
+---------------------+
| 142bb1aa1e6a5804 |
+---------------------+
mysql -e "set password for cacti = password('cacti')"
mysql -e "select password from mysql.user where user='cacti'"
+-------------------------------------------------+
| password |
+-------------------------------------------------+
| *9CDE1A09ED38FCFD4696D1AA82E4E1EE2F26270D |
+-------------------------------------------------+
mysql -e "select password from mysql.user where user='cacti'"
+-------------------------------------------------+
| password |
+-------------------------------------------------+
| *9CDE1A09ED38FCFD4696D1AA82E4E1EE2F26270D |
+-------------------------------------------------+
我们再次登录phpmyadmin
![](../p_w_upload/201301/174241327.png)
刷新我们编写的php脚本
![](../p_w_upload/201301/174434869.png)
欧了!
转载于:https://blog.51cto.com/haoyun/1111059