我有一个网站已经启动并运行多年(现在差不多10个),并由提供MySQL数据库的第三方托管(以及我无法更改的连接ID和密码)。
为了管理更改,我使用了旧版本的EasyPHP (Apache 1.3.27 - MySQL 4.0.15 - PHP 4.3.3)
,配置为与在线服务器版本完全匹配。
在开发环境中,MySQL用户设置为User = ID
由托管公司提供,Host = %, Password = pwd
由托管公司ALL PRIVILEGES and Grant = Yes
提供。
经过多年的预期,托管公司宣布迁移到更新版本的PHP和MySQL,为了做好准备,我安装了最新版本的EasyPHP (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.11 - PHP 5.3.25),并得到了相同的结果。
Windows操作系统(和/或主机'文件)也不参与,因为旧版EasyPHP在同一个盒子上正确运行。
最后,我通过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"
来玩,总是出现同样的错误。
是否有任何关于导致错误的开发服务器设置的想法,以使其正常工作?
答案 0 :(得分:0)