近日,对服务器的mysql密码进行了一次更改,使用的是以前常用的语句格式。
UPDATE mysql.user SET Password = OLD_PASSWORD('yourpig') WHERE User = 'blogguy_cn';
FLUSH PRIVILEGES;
但是更改后php死活连不上,百思不得其解,后来写了一段php的连接代码,自己看了一下输出结果才知道。
php的测试代码如下:
<?php
$link = mysql_connect('localhost', 'blogguy_cn', 'yourpig');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
输出的错误就是:mysql:
Could not connect: mysqlnd cannot connect to MySQL 4.1+ using old authentication
我知道,在这个喧嚣浮躁的年代,www.blogguy.cn不用讲造成这个错误的原因是什么,只要说说如何解决这个问题就可以了,因为大家只看解决办法。
但是我还是要稍微说一两句:
在blogguy.cn的新服务器上安装的是崭新的php和mysql,而新的mysqlnd库需要使用MySQL 4.1新的41-byte的密码格式。
使用旧的16字节的密码将导致mysql_connect()和类似的函数产生一个错误:mysqlnd cannot connect to MySQL 4.1+ using old authentication. (mysqlnd不能用旧的验证方式来连接到MySQL 4.1以上的版本)
而UPDATE mysql.user SET Password = OLD_PASSWORD('yourpig') WHERE User = 'blogguy_cn';这种修改方式就是就的使用的密码格式。
解决的办法很简单:
SET PASSWORD FOR 'blogguy_cn'@'localhost'=PASSWORD('newdogblogguycn');
FLUSH Privileges;
再链一下,是不是一切正常呢?



