首頁  >  文章  >  資料庫  >  為什麼我的 PHP 5.3.0 連接到較舊的 MySQL 資料庫失敗,並顯示“OK packet 6 bytes less than Expected”?

為什麼我的 PHP 5.3.0 連接到較舊的 MySQL 資料庫失敗,並顯示“OK packet 6 bytes less than Expected”?

Susan Sarandon
Susan Sarandon原創
2024-11-03 21:30:03674瀏覽

Why Does My PHP 5.3.0 Connection to an Older MySQL Database Fail with

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn