EasyHP升级后MySQL密码被拒绝


MySQL password rejected after EasyPHP upgrade

我有一个网站,已经运行了很多年(到目前为止差不多有10年了),由提供MySQL数据库的第三方托管(以及我无法更改的连接ID和密码)。

为了管理更改,我使用了EasyHP (Apache 1.3.27 - MySQL 4.0.15 - PHP 4.3.3)的旧版本,配置为与在线服务器版本完全匹配。

在开发环境上,MySQL用户由托管公司提供User = ID,托管公司提供的Host = %, Password = pwdALL PRIVILEGES and Grant = Yes进行设置。

正如预期的那样,这么多年后,托管公司宣布迁移到PHP和MySQL的新版本,为了能够做好准备,我安装了EasyHP (Apache 2.4.7 - MySQL 5.6.15 - PHP 5.4.24)的最新版本。

在这个新版本中,我用PhpMyAdmin创建了MySQL用户(与上面的设置相同,没有错误),并设置了与以前相同的VirtualHosts,但我的脚本都无法连接到数据库,返回了经典错误:

Warning: mysql_connect(): Access denied for user: 'username'@'localhost' (Using password: YES)
  • 注意:在mysql_connect()函数中,使用了正确的主机名,而不是消息错误中提到的'localhost'

其他PHP代码执行正确,但在没有数据库连接的情况下不太有用。我尝试删除密码,可以连接。同样使用root@localhost and no password进行连接。但这些都不是"真实"的选项,所以我真的应该能够使用完整的连接参数进行连接,以模拟在线服务器的设置。

为了完整起见,我还安装并设置了UwAmp(Apache 2.2.22-MySQL 5.6.1-PHP 5.3.25),并得到了相同的结果。

Windows操作系统(和/或"主机"文件)也不涉及,因为旧版本的EasyHP在同一个盒子上正确运行。

最后,我通过PhpMyAdmin删除了该用户,并试图通过PHP mysql_query创建它:

CREATE USER 'userID'@'hostname' IDENTIFIED BY PASSWORD 'password';

这是抛出错误:

(1827) The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.

编辑:错误的查询,用户在跳过查询中的PASSWORD字符串时创建。遗憾的是,这个用户仍然无法连接到数据库。为什么

我还玩了"SET old_passwords=0""....=1",总是犯同样的错误。

有没有人知道导致错误的开发服务器设置,以便正确工作?

此处不应使用PASSWORD子句:

CREATE USER 'userID'@'hostname' IDENTIFIED BY 'password';

检查手动

相关文章: