2014-09-29 63 views
0

我有一个网站已经运行多年(现在差不多有10年了),并且由提供MySQL数据库的第三方托管(并且连接ID和密码我无法更改) 。EasyPHP升级后MySQL密码被拒绝

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

在开发环境上,MySQL用户使用托管公司提供的User = ID,托管公司提供Host = %, Password = pwdALL 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代码正确执行,但没有数据库连接就不是很有用。 我试图删除密码,并可能连接。此外与[email protected] and no password,连接。 但这些对于'真实'的东西没有选择,所以我真的应该能够连接完整的连接参数来模拟在线服务器的设置。为了完整起见,我还安装并设置了UwAmp(Apache 2.2.22 - MySQL 5.6.11 - PHP 5.3.25),并得到了相同的结果。

由于EasyPHP的旧版本在同一个盒子上正确运行,Windows操作系统(和/或'主机'文件)也没有涉及。

最后,我通过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

在4.1版本的MySQL更改密码散列法。你应该阅读这个:http://dev.mysql.com/doc/refman/5.6/en/password-hashing.html – 2014-09-29 10:14:52

+0

我的猜测是你的数据库中的密码列太短,因此意想不到的格式。 – 2014-09-29 10:17:04

+0

@GeraldSchneider我明白,但MySQL在从连接请求接收密码时使用相同的哈希方法,不是吗?当我检查(输出)用户时,密码长度为41位。 '创建用户'有一个错字,用户可以重新创建,但连接仍然被拒绝。 – Notawiz 2014-09-29 10:22:16

回答

0

这里PASSWORD条款不应使用:

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

检查Manual

+0

你是对的,小错字。现在用户可以再次创建。唉,同样的第一个错误... – Notawiz 2014-09-29 10:02:11

相关问题