リモート MySQL 接続が「不明な認証方法」で失敗するのはなぜですか?

Susan Sarandon
リリース: 2024-11-10 09:25:02
オリジナル
224 人が閲覧しました

Why Does My Remote MySQL Connection Fail with

リモート MySQL 接続が「不明な認証方法」で失敗する

MySQL サーバーへのリモート接続を確立しようとすると、恐ろしい「不明な認証方法」が発生します。認証方法」エラーが発生する場合があります。この問題は、サーバーの認証メカニズムがクライアントの認証メカニズムと互換性がない場合に発生します。

この特定のケースでは、ローカル マシン (MySQL バージョン 5.5.27) からリモート サーバー (MySQL バージョン 5.5) に接続するときにエラーが発生しました。 .23)。根本的な原因は、2 つのサーバーで使用されるパスワード ハッシュ メソッド間の非互換性でした。

非互換性の解決

この問題の解決策は、パスワード ハッシュを更新することです。サーバーはクライアントが使用するメソッドと一致します。この例では、MySQL 4.1 以降で採用されている新しい 41 バイトのパスワード形式への更新が含まれます。

パスワード ハッシュの更新

  • MySQL Workbench などのコマンドライン ツールを使用して、リモート MySQL サーバーを実行します。
  • 次のコマンド:
ALTER USER 'yourusername'@'%' IDENTIFIED BY 'new_password';
ログイン後にコピー

ここで、'yourusername' は MySQL ユーザー名、'new_password' は新しいパスワードです。

  • 変更を適用するために権限をフラッシュします:
FLUSH PRIVILEGES;
ログイン後にコピー

変更が反映されるように MySQL サーバーを再起動します。

クライアント コードの変更

パスワードが更新されたら、接続コードを次のように変更します:

$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name;charset=utf8';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    PDO::MYSQL_ATTR_DIRECT_QUERY => true
);

try {
    $online_dbh = new PDO($dsn, 'myusername', 'new_password', $options);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Congratulations!";
} catch (PDOException $e) {
    echo $e->getMessage();
}
ログイン後にコピー

PDO の設定:: MYSQL_ATTR_DIRECT_QUERY を true に設定すると、PDO はより安全な接続方法を使用し、認証が解決されます。問題です。

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

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