「認証プラグイン 'caching_sha2_password' を読み込めません」エラーの修正


概要



MySQL 8 をインストールしましたが、MySQL クライアント (Sequel Pro、HeidiSQL など) を使用してデータベースに接続できません. MySQL クライアントを使用して接続を試みるたびに、次のエラーが発生します

Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found



また

Authentication plugin 'caching_sha2_password' cannot be loaded. The specific module can not be found



理由



MySQL 8.0 の時点で、以前のバージョンのデフォルトであった caching_sha2_password ではなく、mysql_native_password がデフォルトの認証プラグインになりました.これは、この変更により、mysql_native_password に依存するクライアント (Sequel Pro、HeidiSQL など) が接続できなくなることを意味します.

解像度



1) MySQL 構成ファイルに以下を追加することにより、サーバー レベルで mysql_native_password メカニズムに戻すことができます.

[mysqld]
default_authentication_plugin=mysql_native_password


2) ユーザー レベルで、次のプロセスを介して mysql_native_password メカニズムに戻すことができます.

ターミナル ウィンドウを開き、コマンド ライン経由で MySQL インスタンスに接続します.

mysql -u [USERNAME] -p


MySQL パスワードを入力して Enter キーを押すと、MySQL インスタンスにログインする必要があります.
[USERNAME][PASSWORD] 、および [HOST] を適宜置き換えて、次の SQL コマンドを実行します.

注: [HOST] は、自分のコンピューターからのアクセスのみを許可するコンピューターの IP アドレスにすることができます.ローカル開発環境の場合は、% を使用して任意のホストからのアクセスを許可することができます.

ALTER USER '[USERNAME]'@'[HOST]' \
  IDENTIFIED WITH mysql_native_password \
  BY '[PASSWORD]';


また

ALTER USER '[USERNAME]'@'%' \
  IDENTIFIED WITH mysql_native_password \
  BY '[PASSWORD]';


これで、MySQL クライアントに戻り、通常どおり接続できるようになります.

参考文献


  • 2.11.4 MySQL 8.0 での変更 - https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html
  • 6.4.1.2 SHA-2 プラガブル認証のキャッシング - https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html