MySQL PHP の非互換性: 謎のエラーの解決
PHP 5.3.0 経由でリモート MySQL データベースに接続すると、ユーザーは謎のエラーに遭遇する可能性がありますエラーが発生し、接続が失敗します。警告メッセージは通常、OK パケットの予想される長さの不一致と古い認証メカニズムを示しています。
調査の結果、根本的な問題は MySQL アカウントのパスワードの長さに起因することが判明しました。パスワードの長さが 16 文字の場合は、PHP 5.3.0 で使用される mysqlnd ドライバーと互換性のない古いパスワード ハッシュである可能性があります。
この問題を解決するには、次のコマンドを使用して、影響を受ける MySQL アカウントのパスワードをリセットします。新しいもの。これは、次の SQL ステートメントを実行することで実行できます:
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')
潜在的な代替手段として、MySQL サーバーがデフォルトで古いパスワードを使用または作成するように構成されているかどうかを確認します。これは、サーバー設定を調べることで確認できます。さらに、問題のあるサーバーで次のクエリを実行すると、さらに詳しい情報が得られます:
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username'
「username」を、mysql_connect() で使用されている実際のアカウント名に置き換えます。返された値はパスワードの長さと最初の文字を示し、エラーの根本原因に関する詳細情報が提供されます。
以上がPHP 5.3.0 を使用してリモート MySQL データベースに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。