1
1

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環境の構築

Last updated at Posted at 2024-11-07

はじめに

本記事ではDockerを利用したMySQLの環境構築を行います。
具体的にはMySQLコマンドが実行可能なコンテナを用意する手順をまとめます。

Dockerイメージをダウンロード

Dockerイメージは、Dockerコンテナの設計図のようなものです。DockerイメージをもとにDockerコンテナを生成します。
Dockerイメージは自作することもできますが、MySQLのような有名なものについてはDockerHubから取得することが可能です。
どんなMySQLイメージがダウンロード可能か検索してみます。

docker search mysql
NAME                   DESCRIPTION                                      STARS     OFFICIAL
mysql                  MySQL is a widely used, open-source relation…   15470     [OK]
bitnami/mysql          Bitnami container image for MySQL                118       
circleci/mysql         MySQL is a widely used, open-source relation…   30        
cimg/mysql                                                              3         
bitnamicharts/mysql    Bitnami Helm chart for MySQL                     0         
ubuntu/mysql           MySQL open source fast, stable, multi-thread…   65        
rapidfort/mysql        RapidFort optimized, hardened image for MySQL    26        
elestio/mysql          Mysql, verified and packaged by Elestio          1         
google/mysql           MySQL server for Google Compute Engine           25        
docksal/mysql          MySQL service images for Docksal - https://d…   0         
alpine/mysql           mysql client                                     3         
eclipse/mysql          Mysql 5.7, curl, rsync                           2         
mysql/mysql-server     Optimized MySQL Server Docker images. Create…   1023      
jumpserver/mysql                                                        1         
datajoint/mysql        MySQL image pre-configured to work smoothly …   2         
mysql/mysql-router     MySQL Router provides transparent routing be…   28        
ddev/mysql             ARM64 base images for ddev-dbserver-mysql-8.…   1         
mirantis/mysql                                                          0         
ilios/mysql            Mysql configured for running Ilios               1         
corpusops/mysql        https://github.com/corpusops/docker-images/      0         
mysql/mysql-cluster    Experimental MySQL Cluster Docker images. Cr…   100       
vulhub/mysql                                                            0         
javanile/mysql         MySQL for development                            0         
mysql/mysql-operator   MySQL Operator for Kubernetes                    1         
vitess/mysql           Lightweight image to run MySQL with Vitess       1    

今回はOracle社が提供してくれているものをダウンロードします。
このimageは2年ほど更新されていないため、Docker公式のイメージを使うのが良いかもしれません。詳しくはコメント欄をご確認ください。

docker pull mysql/mysql-server

ダウンロードしたイメージは以下のコマンドで確認できます。

docker images
REPOSITORY           TAG       IMAGE ID       CREATED         SIZE
python               3         230a72fb08c5   3 months ago    1.02GB
...
mysql/mysql-server   latest    1d9c2219ff69   21 months ago   496MB

Dockerコンテナを起動

ここまででコンテナの設計図(Dockerイメージ)の用意が完了しました。次は設計図をもとに仮想の計算機であるDockerコンテナを起動します。
コンテナの起動には以下のコマンドを使います。

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

--name=mysql-serverはコンテナにmysql-serverという名前をつけることを表します。-dはバックグラウンドで実行することを表します。
起動したコンテナを確認するには以下のコマンドを使います。

docker ps
CONTAINER ID   IMAGE                COMMAND                   CREATED       STATUS                 PORTS                       NAMES
5fa3ecaf0e04   mysql/mysql-server   "/entrypoint.sh mysq…"   3 hours ago   Up 3 hours (healthy)   3306/tcp, 33060-33061/tcp   mysql-server

コンテナ内でMySQLコマンドを実行

ここまでで仮想の計算機(Dockerコンテナ)の用意が完了しました。最後にコンテナ内でMySQLコマンドを実行します。
まずコンテナ起動時に自動生成されたMySQLのrootユーザのパスワードを確認します。

docker logs mysql-server 2>&1 | grep GENERATED
[Entrypoint] GENERATED ROOT PASSWORD: =2V0@QFU.%l338jo.:7gAnLb9nCJ=0y#

PASSWORD:以降がパスワードです。あとでコンテナでMySQLコマンドを実行するのに必要です。

詳細説明

linuxにおいて、1は標準出力、2は標準エラー出力、&は両方を意味します。

hello, worldとファイルに書き込みます。

vi sample.txt

以下のコマンドは標準出力をsample2.txtに書き込みます。

cat sample.txt 1>sample2.txt

以下のコマンドは標準エラー出力をsample3.txtに書き込みます。

errorcommand 2>sample3.txt

以下のコマンドは標準出力と標準エラー出力をsample4.txtに書き込みます。

ls . /nonexistent > sample4.txt 2>&1

つまり、実行したコマンドはコンテナ中の標準出力と標準エラー出力のうち、GENERATEDを含むものを出力します。


パスワードを使ってコンテナ上のMySQLサーバーに接続します。

docker exec -it mysql-server mysql -u root -p

-itは相互にやり取りすることを表します。
パスワードが要求されるので先ほど調べたパスワードを入力します。入力内容は表示されないので注意

パスワードを変更しないと操作ができないため、パスワードを変更します。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword!';

新しいパスワードはYourNewPassword!です。

これでMySQL環境の構築が完了しました。
データベースを作成し、userテーブルを作成してみます。

CREATE DATABASE study_db;
USE study_db;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    email VARCHAR(100) UNIQUE
);

コンテナが不要になったら以下のコマンドで停止、削除します。

docker stop mysql-server
docker rm mysql-server

参考文献

DockerHub mysql/mysql-server
DockerHub mysql

1
1
2

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?