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 サイトの他の関連記事を参照してください。