🎩

MySQLのトレーニングに使えるDockerイメージ

2021/06/13に公開

mysql-employeesというイメージが MySQL の練習にとても便利なので、
そちらを使い始めるまでの手順を紹介します。
実際に使い始めるまでに、自分は「あれ?MySQL にログインするときのパスワードは?』など意外と詰まってしまったので、
同じような方の役に立ったら嬉しいです。

環境

macOS Big Sur
バージョン 11.2.3

docker desktop
バージョン 3.1.0

MySQL を使えるようにする

イメージを pull します。

$ docker pull genschsa/mysql-employees

※当たり前ですが、Docker Desktop を起動してくださいね

イメージを動かします。

 docker run -d \
  --name mysql-employees \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=college \
  -v $PWD/data:/var/lib/mysql \
  genschsa/mysql-employees

起動してるか確認します。

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f656a298255f genschsa/mysql-employees "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-employees

コンテナに入ります。

$ docker exec -i -t mysql-employees bash

mysql-employees はイメージの名前です。

MySQL にログイン

root@f656a298255f:/# mysql -u root -p
Enter password:

パスワードは collegeです。
docker run コマンドをしたときに指定してました。
MYSQL_ROOT_PASSWORD=collegeのところです。

MySQL で実際に操作してみる

データベースを見ます。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| employees          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

employess のデータベースを使います。

mysql> USE employees

テーブルを確認します。

mysql> SHOW TABLES;
+----------------------+
| Tables_in_employees  |
+----------------------+
| current_dept_emp     |
| departments          |
| dept_emp             |
| dept_emp_latest_date |
| dept_manager         |
| employees            |
| salaries             |
| titles               |
| v_full_departments   |
| v_full_employees     |
+----------------------+
10 rows in set (0.00 sec)

emloyess テーブルのカラムを確認します。

mysql> SHOW COLUMNS FROM employees;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int(11)       | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | NO   |     | NULL    |       |
| last_name  | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

employee の数を集計します。

mysql> SELECT COUNT(*) FROM employees;
+----------+
| COUNT(*) |
+----------+
|   300024 |
+----------+
1 row in set (0.04 sec)

データも元々多く入っているので、トレーニングで便利ですね。

gender が M の employee の数を集計します。

mysql> SELECT COUNT(*) FROM employees WHERE gender = 'M';
+----------+
| COUNT(*) |
+----------+
|   179973 |
+----------+
1 row in set (0.03 sec)

最後に

mysql-employees を使うことで、手軽に MySQL のトレーニング環境を手に入れることができました。
データも元々入っているので、データを投入する手間なども削減されるでしょう。
元に戻したい時にもコンテナを削除して再び立ち上げればいいので、
気持ち的に楽にトレーニングできるのではないでしょうか。

この記事が誰かの役に立ったら嬉しいです。

Discussion