MySQL PHP 相容性問題
從執行PHP 5.3.0 的本地WAMP 伺服器連接到遠端MySQL 資料庫時,出現錯誤:
Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected. PID=5880 in ... Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication in ...
連接到較舊的MySQL 資料庫(例如版本5.0.22)而不是較新的資料庫(例如版本5.0.45)時,此問題通常會出現。
原因:
當使用的 MySQL 帳戶具有舊的 16 字元密碼雜湊時,就會出現問題。
解決方案:
要解決此問題,請重設有問題帳戶的密碼以使用現代密碼格式。在MySQL 用戶端中執行以下查詢:
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword');
其他資訊:
要驗證密碼雜湊是否確實是舊的,請在舊密碼上執行以下查詢MySQL 伺服器(版本5.0.22):
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username';
如果「長度」欄位傳回16 並且「子字串」欄位傳回「*」字符,則密碼雜湊是舊的。
以上是為什麼我的 PHP 5.3.0 連接到較舊的 MySQL 資料庫失敗,並顯示“OK packet 6 bytes less than Expected”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!