2024年4月10日水曜日

docker で MySQL8 を起動してみる

docker で MySQL8 を起動してみる

概要

環境強変数での設定とオプションの指定方法を紹介します

環境

  • Ubuntu 22.04
  • docker 25.03
  • MySQL 8.3.0

起動

認証プラグインと文字コードを指定して起動します
パスワード情報は環境変数経由で設定します
今回はテストなのでデータの永続化はしていません

docker run --rm --name=mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=xxxxxxxx \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=xxxxxxxx \
mysql:8.3.0 --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4

接続

  • mysql -u test -p test -h 127.0.0.1

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

docker で起動した場合は必ず -h を指定する必要があります

プラグイン変更

--default-authentication-plugin=mysql_native_password だと警告が表示されるので別のプラグインを使用します
caching_sha2_password を使います

2024-04-08T01:44:53.610926Z 13 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
docker run --rm --name=mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=xxxxxxxx \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=xxxxxxxx \
mysql:8.3.0 --default-authentication-plugin=caching_sha2_password --character-set-server=utf8mb4

docker の場合 --initialize-insecure オプションは使えないっぽい

以下のような警告が表示されるので --initialize-insecure を付与してみたのですがコンテナがうまく起動できませんでした

2024-04-08T01:53:26.376301Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
docker run --rm --name=mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=xxxxxxxx \
-e MYSQL_DATABASE=test \
-e MYSQL_USER=test \
-e MYSQL_PASSWORD=xxxxxxxx \
mysql:8.3.0 --default-authentication-plugin=caching_sha2_password --character-set-server=utf8mb4 --initialize-insecure --user=mysql

証明書対策

以下の警告が表示されます

2024-04-08T01:53:30.653497Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.

デフォルトの場合は独自で証明書を生成するようです
今回はテストなので証明書は自己証明書のままにしています

最後に

docker で mysql8 を動かしてみました
mysqld.cnf などを使っても設定できるようですが引数でもいろいろと設定可能です

参考サイト

0 件のコメント:

コメントを投稿