MySQL PHP の非互換性への対処
PHP 5.3.0 を使用してリモート MySQL データベースに接続しようとすると、ユーザーは特有の問題に遭遇する可能性があります。パケット長と古い認証に関連するエラーです。この非互換性は、MySQL バージョン 5.0.22 を実行しているデータベースに接続すると発生しますが、バージョン 5.0.45 の別のデータベースへの接続は成功します。
根本原因の解明
この非互換性の根本的な原因は、MySQL アカウントのパスワードにあります。パスワードが古い 16 文字の文字列である場合、MySQL の mysqlnd 拡張機能はそれを利用して MySQL サーバーへの接続を確立できません。
問題の解決
この問題を解決するには、次の 2 つの解決策を実行できます:
ユーザー パスワードのリセット:
サーバー設定を確認します:
パスワードの長さの決定
影響を受けるユーザーのパスワードの長さを確認するには、問題のある MySQL サーバーで次のクエリを実行します。
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username'
「username」を、mysql_connect() 関数で使用される実際のユーザー名に置き換えます。
クエリが長さ 16 を返し、最初の文字が「*」の場合、パスワードが古い 16 文字のハッシュであることが確認されます。これは、前述の方法を使用してパスワードをリセットする必要があることを示しています。
古いパスワードの問題に対処すると、PHP 5.3.0 を使用してリモート MySQL データベースに正常に接続でき、発生した非互換性が解決されます。
以上がPHP 5.3.0 を使用して MySQL データベースに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。