2014-09-29 74 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

相關問題