PHP 5.3.0 を使用して MySQL データベースに接続できないのはなぜですか?

Patricia Arquette
リリース: 2024-11-03 15:57:30
オリジナル
644 人が閲覧しました

Why Can't I Connect to My MySQL Database with PHP 5.3.0?

MySQL PHP の非互換性への対処

PHP 5.3.0 を使用してリモート MySQL データベースに接続しようとすると、ユーザーは特有の問題に遭遇する可能性があります。パケット長と古い認証に関連するエラーです。この非互換性は、MySQL バージョン 5.0.22 を実行しているデータベースに接続すると発生しますが、バージョン 5.0.45 の別のデータベースへの接続は成功します。

根本原因の解明

この非互換性の根本的な原因は、MySQL アカウントのパスワードにあります。パスワードが古い 16 文字の文字列である場合、MySQL の mysqlnd 拡張機能はそれを利用して MySQL サーバーへの接続を確立できません。

問題の解決

この問題を解決するには、次の 2 つの解決策を実行できます:

  1. ユーザー パスワードのリセット:

    • 影響を受けるユーザーのパスワードをリセット次のコマンドを使用します:
      SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')
  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 サイトの他の関連記事を参照してください。

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