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

Barbara Streisand
リリース: 2024-11-07 09:11:02
オリジナル
648 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!