ホームページ  >  記事  >  データベース  >  MySQL が「不明な認証方法」リモート接続エラーをスローするのはなぜですか?

MySQL が「不明な認証方法」リモート接続エラーをスローするのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-07 09:11:02650ブラウズ

Why Does MySQL Throw an

MySQL リモート接続エラー: "不明な認証方法"

ローカル マシンから MySQL サーバーへのリモート接続を確立しようとすると、次のエラーが発生する場合があります:

Warning: PDO::__construct(): The server requested authentication method unknown to the client [mysql_old_password] in ...

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

問題の理解:

このエラーは通常、ローカルとリモートの MySQL で使用されるパスワード ハッシュ メソッド間の非互換性を示します。サーバー。 MySQL バージョン 4.1 より前のバージョンでは 16 バイトのパスワード ハッシュ方式が使用されていましたが、バージョン 4.1 以降ではより安全な 41 バイトのハッシュ方式が採用されました。ローカル MySQL サーバーが古いハッシュ方式を使用しているが、リモート サーバーが新しいハッシュ方式を使用している場合、接続試行は「不明な認証方式」エラーで失敗します。

問題の解決:

この問題を解決するには、新しい 41 バイトのハッシュ形式を使用するようにリモート MySQL サーバーのパスワードを更新する必要があります。方法は次のとおりです:

  1. リモート MySQL サーバーに接続します:

    mysql -u [username] -p[password]
  2. 更新パスワード:

    ALTER USER [username] IDENTIFIED BY '[new_password]';
  3. 権限の付与:

    ユーザーがデータベースにアクセスするために必要な権限を持っていることを確認します:

    GRANT ALL PRIVILEGES ON [database_name].* TO [username]@'local_ip_address';
  4. 再接続:

    更新されたパスワードを使用してリモート MySQL サーバーに接続してみてください:

    $dsn = 'mysql:host=184.173.209.193;dbname=my_db_name';
    $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    );
    
    try {
        $online_dbh = new PDO($dsn, 'myusername', 'new_password', $options);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "Success!";
    } catch (PDOException $e) {
        echo $e->getMessage();
    }

以上がMySQL が「不明な認証方法」リモート接続エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。