1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerでMySQLコンテナが一瞬だけ起動して停止する原因と解決方法(M1 Mac)

Posted at

発生したこと

dockerでmysqlコンテナを起動しようとした。
一瞬、コンテナが立ち上がるものの、数秒すると停止してまう。

環境

PC:Apple M1 Mac
MacOS: 14.6.1(sonoma)

発生経緯

以下、コマンドを叩いた

docker run --name mysql001 -dit --net network001 \
  -e MYSQL_ROOT_PASSWORD=myrootpass \
  -e MYSQL_DATABASE=db001 \
  -e MYSQL_USER=myuser \
  -e MYSQL_PASSWORD=password \
  mysql \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci \
  --default-authentication-plugin=mysql_native_password

数秒、コンテナが起動するものの、すぐに停止する

そこで以下コマンドでdockerのログを確認する

docker logs mysql000ex11

ログ例
「[ERROR]」や「[Warning]」で始まる行を確認。
Cannot create user や Authentication plugin に関連するエラーがないか確認。

ログ

以下エラーログが出ていた

2024-11-26T07:16:43.877071Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default-authentication-plugin=mysql_native_password'.
2024-11-26T07:16:43.878072Z 0 [ERROR] [MY-010119] [Server] Aborting

原因

MySQL8.0から'default-authentication-plugin=mysql_native_password'が非推奨になった
デフォルト認証プラグインは caching_sha2_password であり、特に設定しなくても安全性が高い SHA-256 が利用されるらしい

暫定対応

使用している MySQL のイメージタグ(例: mysql:latest や mysql:8.0)を確認
バージョンを明確に指定してみる

docker run --name mysql001 -dit --net network001 \
  -e MYSQL_ROOT_PASSWORD=myrootpass \
  -e MYSQL_DATABASE=db001 \
  -e MYSQL_USER=myuser \
  -e MYSQL_PASSWORD=password \
  mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci \

解決

起動したが、latest を指定すると、想定外のバージョンに引き込まれるケースがある。
バージョンを明確に指定することで問題を防げるので指定できるならした方がよさげ。
あと、ログ確認は大事。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?