ローカルにMySQLを構築し、DBeaver(DBクライアント)から接続を行う際に2つエラーが生じたので、エラーの原因と回避方法をメモ書き程度ですが記録します。
■ エラー内容
今回は以下2種類のエラーについて解説します。
- caching_sha2_passwordのエラーが出力される。
- Public Key Retrieval is not allowedのエラーが出力される。
■ caching_sha2_passwordのエラーが出力される。
エラーが発生する条件
- ローカルで起動しているMySQLがバージョン8系である。
- 起動プロファイルを「MySQL5」で作成してしまっている。
この場合、「caching_sha2_password」エラーが出力されます。
対処法
- DBeaverで接続プロファイル作成時に「MySQL5」ではなく「MySQL」を選択します。
なお、接続時にドライバーのDLを推奨された際は、指示に従いドライバーをDLしてください。
MySQLはバージョン8系から、より安全な接続を提供するためにSHA-256を利用した暗号化と認証方式を提供しています。このエラーはより安全な接続方式を利用するためにクライアント側でもMySQLの推奨設定可能とするためのものです。
■ Public Key Retrieval is not allowedのエラーが出力される。
エラーが発生する条件
- caching_sha2_passwordを利用してMySQLに接続しようとしている。
- クライアントとDBサーバー間の通信経路がTLSで保護されていない。
対処方
- 接続先プロファイルのドライバー設定からallowPublicKeyRetrievalをtrueに設定します。
通常MySQLでは、caching_sha2_passwordを利用してDBに接続する場合は、通信経路の保護が推奨されておりデフォルトでは保護なしでの接続はできないようになっています。この設定をtrueにすることで保護されていない環境下でもcaching_sha2_passwordを利用した接続が可能になりエラーを回避できます。
なお無論ですが、通信経路が保護されていない環境ではMITMなどの攻撃に脆弱であり、開発者自身が安全性を保証する必要があります。
■ 参考資料