1

我有一个专用服务器,它已经设置并运行了一段时间,现在使用以下内容。我们称这个服务器为 1。

MySQL 5.0.95 PHP 5.2.17

使用此方法从 PHP 创建到数据库的连接运行正常:

mysql_connect($IPAddress,$DBUser,$DBPassword);
@mysql_select_db($database) or die( "Unable to select database");

现在我还有第二台专用服务器,我们称之为服务器2,它连接到上面服务器上的数据库,直到今天它工作正常。我所做的是将 PHP 更新到 5.3.19 版本,现在我收到的错误是:

无法连接:mysqlnd 无法使用旧的不安全身份验证连接到 MySQL 4.1+。请使用管理工具通过命令 SET PASSWORD = PASSWORD('your_existing_password') 重置密码。这将在 mysql.user 中存储一个新的、更安全的哈希值。如果此用户在 PHP 5.2 或更早版本执行的其他脚本中使用,您可能需要从 my.cnf 文件中删除 old-passwords 标志

我试过运行 SET PASSWORD 命令,但它仍然不起作用。我也尝试将旧密码标志设置为 0,但这也不起作用。

我错过了什么吗?在服务器 1 上一切正常,只是服务器 2 不起作用。

4

1 回答 1

0

删除或注释掉文件“my.cnf”中的以下行(例如/etc/my.cnf):

old_passwords = 1

这将阻止 MySQL 使用旧密码,现在我敢打赌,如果您运行查询 -SELECT user, Length(Password) FROM mysql.user;您会看到您的用户名可能有两个条目,一个 16 个字符和一个 41(41 是SET PASSWORD您最近运行的查询。)

old_passwords删除/注释掉后,您需要重新启动 MySQL,否则它将继续使用old_passwords

一旦 MySQL 重新启动,您可能需要再次运行以下查询:

UPDATE mysql.user SET Password = PASSWORD('yourPassword!') WHERE user = 'yourUser';

&

FLUSH Privileges;
于 2013-01-22T13:14:23.820 回答