博客小子:记录我们对互联网和生活的探索! 注册 | 登陆

mysql出现Could not connect: mysqlnd cannot connect to MySQL 4.1+ using old authentication错误

Tags: mysql, php, 错误, authentication

近日,对服务器的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;

再链一下,是不是一切正常呢?

Tags: mysql, php, 错误, authentication

« 上一篇:关于hostmonster和godaddy可退款的信用承诺 | 下一篇:如何把一个网页强制带参数跳转到一个框架包含窗口中 »

只显示10条记录相关文章

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):