リモート MySQL 接続が「不明な認証方法」で失敗する
MySQL サーバーへのリモート接続を確立しようとすると、恐ろしい「不明な認証方法」が発生します。認証方法」エラーが発生する場合があります。この問題は、サーバーの認証メカニズムがクライアントの認証メカニズムと互換性がない場合に発生します。
この特定のケースでは、ローカル マシン (MySQL バージョン 5.5.27) からリモート サーバー (MySQL バージョン 5.5) に接続するときにエラーが発生しました。 .23)。根本的な原因は、2 つのサーバーで使用されるパスワード ハッシュ メソッド間の非互換性でした。
非互換性の解決
この問題の解決策は、パスワード ハッシュを更新することです。サーバーはクライアントが使用するメソッドと一致します。この例では、MySQL 4.1 以降で採用されている新しい 41 バイトのパスワード形式への更新が含まれます。
パスワード ハッシュの更新
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 サイトの他の関連記事を参照してください。