ホームページ > データベース > mysql チュートリアル > 古い MySQL データベースへの PHP 5.3.0 接続が「OK パケットが予想より 6 バイト短い」というメッセージで失敗するのはなぜですか?

古い MySQL データベースへの PHP 5.3.0 接続が「OK パケットが予想より 6 バイト短い」というメッセージで失敗するのはなぜですか?

Susan Sarandon
リリース: 2024-11-03 21:30:03
オリジナル
699 人が閲覧しました

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 を返し、「サブストリング」フィールドが「*」文字を返す場合、パスワード ハッシュは古いです。

以上が古い MySQL データベースへの PHP 5.3.0 接続が「OK パケットが予想より 6 バイト短い」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート