RSA Encryption not supported – caching_sha2_password plugin was built with GnuTLS support がでたときの対処法

Ruby on Rails

原因

MySQL5.7までの認証プラグインにはmysql_native_passwordがデフォルトで使用されていましたがMySQL8より新たに追加されたcacing_sha2_passwordがデフォルトに変更されましたがクライアント側が対応していないため。

解決法1

docker-compose.ymlに以下の行を追加すればOKです。すでに構築済みでも大丈夫です。

command: --default-authentication-plugin=mysql_native_password

解決法2

DBのレコードを書き換える方法です。DB内に入っている値を書き換えるので、一時的な解決方法です。

以下の実行例はdocker-composeで立ち上げている場合

docker exec -it <repository_name>-db-1 bash

passwordの部分は任意の文字列に置き換えてください。

# mysql -u root -p
> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
> flush privileges;

発生するタイミング

  • 初期セットアップ時。
  • MySQLのDocker Imageのバージョンを上げたり(あがってしまったり)するとDBのユーザデータが初期化される場合がある様子。

コメント