Programming Self-Study Notebook

勉強したことを忘れないように! 思い出せるように!!

Docker+MySQLの環境構築

f:id:overworker:20200919000842p:plain:h150

1.Dockerのセットアップ

  • 以下のページにDocker関連のノート(Dockerの導入を含む)をまとめています。

2.Docker環境でMySQLを使用する

2-1.MySQLサーバのDockerイメージをダウンロードする

2-1-1.DockerHubにあるMySQLのDockerイメージを検索する

実際に使用するコマンドは以下になります。

docker search mysql

上記コマンドの実行結果画面が以下になります。 f:id:overworker:20201010220028p:plainOFFICIALOKがついているものがDocker社の認定イメージです。

  • Oracle社が作成しているMySQL公式イメージは myql/mysql-server です。

ちなみに、DockerHub上での上記イメージの紹介ページは mysql/mysql-server になります。

f:id:overworker:20201010221846p:plain:h250

2-1-2.DockerHubにあるMySQLのDockerイメージをダウンロードする

実際に使用するコマンドは以下になります。(ここではMySQL 8.0を指定します。)

docker pull mysql/mysql-server:8.0

上記コマンドの実行結果画面が以下になります。 f:id:overworker:20201010222810p:plain

2-1-3.ダウンロードしたDockerイメージを確認する

実際に使用するコマンドは以下になります。 - docker images というコマンドでダウンロード済みのDockerイメージの一覧を表示することができます。

docker images

上記コマンドの実行結果画面が以下になります。 f:id:overworker:20201010223839p:plain

2-2.Dockerイメージをコンテナ化し起動する

2-2-1.コンテナ化して起動する

実際に使用するコマンドは以下になります。

docker run --name=mysql -d mysql/mysql-server

上記コマンドの実行結果画面が以下になります。 f:id:overworker:20201010224009p:plain

2-2-2.起動したコンテナを確認する

実際に使用するコマンドは以下になります。

docker ps

上記コマンドの実行結果画面が以下になります。 f:id:overworker:20201010224210p:plain

2-3.MySQLサーバにコンテナ内部から接続する

2-3-1.コンテナ上のMySQLサーバーに接続するためのパスワードを調べる

  • MySQLサーバーコンテナ内でMySQLクライアントを実行する際のパスワードが必要
    • パスワードはLogの中に出力されているので、該当箇所を抽出する

実際に使用するコマンドは以下になります。

// Linuxの場合は以下になります
docker logs mysql1 2>&1 | grep GENERATED

// Windows(コマンドプロンプト)の場合は以下になります
docker logs mysql1 2>&1 | findstr GENERATED

上記コマンドの実行結果画面が以下になります。 f:id:overworker:20201010225758p:plainWindows環境での実行結果です。

2-3-2.調べたパスワードを用いてコンテナ上のMySQLサーバーに接続する

実際に使用するコマンドは以下になります。

// 最初にコマンドを入力
docker exec -it mysql mysql -u root -p

// 次に[パスワード]を入力
4t53fOzeJ(elZIpSUgAwUG70rUl

上記コマンドの実行結果画面が以下になります。 f:id:overworker:20201010230928p:plain

2-3-3.MySQLのコマンドを実行してみる(エラーになります)

  • 最初にパスワードを変更する必要があります。
    • パスワードを変更せずに利用しようとすると以下の警告が表示されます。

実際に使用するコマンドは以下になります。

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

実際の結果画面が以下になります。 f:id:overworker:20201010231803p:plain

2-3-4.初期パスワードを変更する

パスワードは以下の条件を満たす必要があります。

項目 条件
パスワード長 8文字以上
大文字小文字 それぞれ1文字以上
数字 1文字以上
記号 1文字以上
その他 ユーザー名と同じでない

実際に使用するコマンドは以下になります。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '********';

実際の結果画面が以下になります。 f:id:overworker:20201010233013p:plain

2-3-5.MySQLのコマンドを実行してみる(今度は成功する)

mysql> show databases;

実際の結果画面が以下になります。
f:id:overworker:20201010233202p:plain

2-4.コンテナを停止し削除する

// 起動しているコンテナの停止
docker stop mysql

// 停止したコンテナの起動
docker start mysql

// コンテナの再起動
docker restart mysql

// 起動しているコンテナの停止
docker stop mysql

// コンテナの削除
docker rm mysql