最近、CircleCi 2でコードをテストするときに問題が発生しました。config.ymlの一部:
_jobs:
build:
environment:
docker:
...
- image: circleci/mysql
- image: rabbitmq:3-Alpine
working_directory: ~/webapp
steps:
...
- run:
name: Prepare DB
command: echo "create database" | mysql --Host 127.0.0.1
_
ビルドは_Prepare DB
_で失敗します
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: Error loading shared library /usr/lib/mysql/plugin/caching_sha2_password.so: No such file or directory Exited with code 1
このエラーは現在発生しているだけで、circle/mysqlの設定は変更されていません。
例から https://stackoverflow.com/a/49944625/2713641 _--default-authentication-plugin=mysql_native_password
_フラグを設定できると指定されていますが、ここで適用されるかどうか、またはサークルで適用する方法がわかりませんciセットアップ。
この問題はmysql8固有であり(Raymondが指摘)、CircleCiが最新のDockerイメージをmysql 8にアップグレードしたためにエラーが発生しました。したがって、特定のケース(mysql 5.7を使用)の解決策は、単にmysql dockerイメージの適切なタグ:
jobs:
build:
environment:
docker:
...
- image: circleci/mysql:5.7
Mysql 8を保持したい場合は、このように構成します
- image: circleci/mysql:latest
# just add this:
command: [--default-authentication-plugin=mysql_native_password]
environment:
MYSQL_DATABASE: myapp_test