我有一個網站已經運行多年(現在差不多有10年了),並且由提供MySQL數據庫的第三方託管(並且連接ID和密碼我無法更改) 。EasyPHP升級後MySQL密碼被拒絕
要管理更改,我使用了舊版本的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代碼正確執行,但沒有數據庫連接就不是很有用。 我試圖刪除密碼,並可能連接。此外與[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"
,總是有同樣的錯誤。
有沒有人有任何想法的開發服務器設置導致錯誤,以使這個工作正常?
在4.1版本的MySQL更改密碼散列法。你應該閱讀這個:http://dev.mysql.com/doc/refman/5.6/en/password-hashing.html – 2014-09-29 10:14:52
我的猜測是你的數據庫中的密碼列太短,因此意想不到的格式。 – 2014-09-29 10:17:04
@GeraldSchneider我明白,但MySQL在從連接請求接收密碼時使用相同的哈希方法,不是嗎?當我檢查(輸出)用戶時,密碼長度爲41位。 '創建用戶'有一個錯字,用戶可以重新創建,但連接仍然被拒絕。 – Notawiz 2014-09-29 10:22:16