PHP MySQL连接查询

时间:2013-01-22 13:06:32

标签: php mysql connection

我有一个专用服务器,已经设置并运行了一段时间,现在有以下内容。我们称这个服务器为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文件中删除旧密码标志

我尝试过运行SET PASSWORD命令,但仍然无效。我也尝试将old-passwords标志设置为0,这也不起作用。

我错过了什么吗?一切都在服务器1上正常工作,它只是服务器2无效。

1 个答案:

答案 0 :(得分: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;