DockerでMySQL8.0のイメージを使用した際、「cryptography is required for sha256_password or caching_sha2_password」エラーが発生したのでその回避策。
原因
デフォルトの認証がcaching_sha2_passwordになっていたのですが、これだと暗号化がうまくいかないのか、復号の際の検証がうまくいかないのか、エラーが発生しているようです。
参考
・アプリ制作時に悩まされたエラー集
・MYSQL8.0におけるデフォルトの認証プラグインの変更
回避策
認証方式をMySQL8.0.4以前のmysql_native_passwordに戻しましょう。CMDで変更することも可能だと思いますが、今回はmy.cnfを自作して、起動したコンテナにマウントします。
my.cnf
[musqld]
default_authentication_plugin= mysql_native_password
docker-compose.yaml
・・・略
mysql:
image: mysql:8.0
volumes:
- ./my.cnf:/etc/mysql/conf.d/my.cnf
my.cnfをマウントする方式にしておくことで文字コード問題(utf8,latin問題)などが発生した場合も設定を書いてあげるだけなので簡単に対応することができるようになります。