首頁 > 資料庫 > mysql教程 > 為什麼我的 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
發布: 2024-11-03 21:30:03
原創
727 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板