Docker: MySQL8で認証関連のエラーが発生したのでその対策

DockerMySQLWordPressを立ち上げたところ、認証関連のエラーが発生しました。

エラー内容

MySQL Connection Error: (2054) The server requested authentication method unknown to the client

原因

MySQL8から新しい認証方式が採用されたため、そのことが原因で認証に失敗しているようです。

対策

この mysql 8 new authentication method caching_sha2_password | github で対策がコメントされていたので紹介します。

認証オプションとして下記を設定し、旧来の認証方式に戻すことで解決できるようです。

--default-authentication-plugin=mysql_native_password

オプションは、docker-compose.yml で設定できます。

docker-compose.ymlファイル

version: 3

services:
  mysql:
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    env_file: .env

.envファイル

MYSQL_ROOT_PASSWORD=pass

上記の設定で docker-compose up したら解決しました。

バージョンアップには新しさへの期待がありますが、同時に意図しない結果を招く怖さがあります。