質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2239閲覧

dockerを使用してmysqlをエラー無く起動したい

k.a_teratail

総合スコア845

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/10/12 06:46

前提・実現したいこと

Dockerを利用して、下記のディレクトリ構造と手順でmysqlを起動しようとしていますが、エラーメッセージが表示され、起動しません。

ディレクトリ構造

sample/ ┣ db/ ┃ ┗ my.cnf ┣ docker-compose.yml ┗ Dockerfile-mysql

実行手順

terminal

1sample $ docker-compose up -d 2Creating sample_db ... done 3 4# 少ししてDocker Desktopの Containers/Apps画面を確認すると EXITED(1) で終了してます 5 6# 再度 up -d で起動すると、エラーは表示されてますが、RUNNING 状態になります。 7sample $ docker-compose up -d 8Starting sample_db ... done

発生している問題・エラーメッセージ

mysql_ssl_rsa_setup: Can't change dir to '/root/' (Errcode: 13 - Permission denied) 2021-10-12 15:05:28 [ERROR] Error changing working directory

該当のソースコード

docker-compose.yml

yml

1version: '3' 2services: 3 db : 4 build: 5 context: ./ 6 dockerfile: Dockerfile-mysql 7 container_name: 'sample_db' 8 ports: 9 - "127.0.0.1:16606:16606" 10 volumes: 11 - ./db/mysql_data:/var/lib/mysql 12 - ./db/my.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf 13 working_dir: '/root' 14 environment : 15 MYSQL_ROOT_PASSWORD : root 16 MYSQL_USER : root 17 MYSQL_PASSWORD : password 18 LANG : ja_JP.UTF-8 19

Dockerfile-mysql

FROM mysql:8 USER root RUN apt-get update RUN apt-get -y install locales && \ localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LANGUAGE ja_JP:ja ENV LC_ALL ja_JP.UTF-8 ENV TZ JST-9 ENV TERM xterm RUN apt-get install -y vim less

my.cnf

[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql log-error = /var/log/mysql/error.log # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 character-set-server=utf8 secure-file-priv="" sql_mode="" [client] default-character-set=utf8

試したこと

/root/ への権限の問題だったので
Dockerfile-mysql の最終行に RUN sudo 777 /root/ を追加してみたのですが変わりませんでした。

補足情報(FW/ツールのバージョンなど)

MacOS Catalina バージョン: 10.15.7
$ docker version Client: Cloud integration: 1.0.17 Version: 20.10.7 API version: 1.41 Go version: go1.16.4 Git commit: f0df350 Built: Wed Jun 2 11:56:22 2021 OS/Arch: darwin/amd64 Context: desktop-linux Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.7 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: b0f5bc3 Built: Wed Jun 2 11:54:58 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.6 GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d runc: Version: 1.0.0-rc95 GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7 docker-init: Version: 0.19.0 GitCommit: de40ad0

原因と解消方法が分かる方、いらっしゃいますでしょうか?
ご教授いただければ幸いです。

よろしくお願いいたしますm(_ _)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

surface_0

2021/10/12 07:12

> RUN sudo 777 /root/ これはchmodの書き忘れでしょうか?
surface_0

2021/10/12 07:32 編集

そもそも環境変数の指定によってrootユーザを一般ユーザとして作成しようとして、エラーになってしまいます。 > MYSQL_ROOT_PASSWORD : root > MYSQL_USER : root > MYSQL_PASSWORD: password [ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user 結局MYSQL_USERを適当な名前にしたら普通に動いてしまったので、状況再現はできませんでしたが…
k.a_teratail

2021/10/12 08:06

>> RUN sudo 777 /root/ > これはchmodの書き忘れでしょうか? 記載しても変化がなかったので、記載しませんでした。 > 結局MYSQL_USERを適当な名前にしたら普通に動いてしまったので、状況再現はできませんでしたが… 名前を変更して、docker-compose up -d を実行しましたがエラーが発生してました。 ダメもとで imagesを削除して、docker-compose up -d を実行すると エラーなく動いていることを確認できました。 お手数お掛けしました。ありがとうございますm(_ _)m
guest

回答1

0

自己解決

お騒がしました。こちら解決しました。
解決方法

そもそも環境変数の指定によってrootユーザを一般ユーザとして作成しようとして、エラーになってしまいます。

MYSQL_ROOT_PASSWORD : root
MYSQL_USER : root
MYSQL_PASSWORD: password

[ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user

結局MYSQL_USERを適当な名前にしたら普通に動いてしまったので、状況再現はできませんでしたが…

投稿2021/10/12 08:10

k.a_teratail

総合スコア845

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問