Dockerで始めるMySQL入門:ハンズオンで学ぶデータベース基礎

アプリケーション開発を行う上で、データを安全かつ効率的に扱うために欠かせないのがデータベースです。その中でも「MySQL」は世界中で最も広く使われているオープンソースのRDBMS(リレーショナル・データベース管理システム)の1つです。
本記事では、Dockerを使ってMySQLを簡単に立ち上げ、実際にデータを扱いながら基本を理解することを目的とします。
面倒なインストール作業を省き、コンテナ技術を活用してすぐに実践できるハンズオン形式で進めていきましょう。


1. MySQLとは?

MySQLはOracle社が開発を主導するオープンソースのデータベース管理システムで、
WordPress、YouTube、Twitterなど、数多くの大規模Webサービスでも利用されています。

特徴としては以下の通りです。

  • オープンソースかつ無料で利用可能
  • 高速な読み込み性能安定した動作
  • SQL言語によるデータ操作が可能
  • 豊富なクライアント・管理ツール

このような特長から、アプリ開発者・インフラエンジニア問わず幅広く利用されています。


2. DockerでMySQLを使う理由

従来はMySQLをローカル環境に直接インストールする必要がありましたが、
バージョンの違いや環境設定の不整合がトラブルの原因になることも多くありました。

Dockerを使うことで次のようなメリットがあります。

  • 即時環境構築:インストール不要、コマンド一発で起動
  • 複数バージョンの共存が容易
  • 環境破壊の心配がない(削除すればすぐクリーン)

つまり、MySQLを「試す」「壊す」「作り直す」が自由にできる、学習に最適な環境です。


3. 事前準備

以下が事前に必要です。

  • Dockerがインストール済みであること
  • コマンドライン操作(ターミナルまたはPowerShell)を使えること

動作確認として、次のコマンドを実行してみましょう。

docker --version

バージョンが表示されればOKです。


4. ハンズオン:MySQLコンテナを起動する

まずは実際にMySQLをDockerコンテナとして起動してみましょう。

ステップ1:コンテナ起動コマンド

以下のコマンドを実行します。

docker run --name mysql-demo \
  -e MYSQL_ROOT_PASSWORD=rootpass \
  -p 3306:3306 \
  -d mysql:8.0

オプションの意味

  • --name mysql-demo:コンテナ名(任意)
  • -e MYSQL_ROOT_PASSWORD=rootpass:rootユーザーのパスワード設定
  • -p 3306:3306:ホストとコンテナのポートをバインド
  • -d:バックグラウンド実行モード

このコマンドを実行すると、DockerがMySQLイメージを自動的に取得し、コンテナを起動します。


ステップ2:動作確認

コンテナが起動しているか確認します。

docker ps

出力例:

CONTAINER ID   IMAGE       COMMAND                  STATUS         PORTS
a1b2c3d4e5f6   mysql:8.0   "docker-entrypoint.s…"   Up 10 seconds  0.0.0.0:3306->3306/tcp

「STATUS」が「Up」と表示されていれば成功です。


5. MySQLに接続してみよう

次に、MySQLコンテナに入って操作してみます。

ステップ1:コンテナ内のMySQLにログイン

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

パスワードを求められたら、rootpass を入力します。

接続に成功すると、次のようなプロンプトが表示されます。

mysql>

これでMySQLシェルにログインできました。


6. 基本操作(SQL入門)

ここからは実際にデータを操作してみます。

データベースの作成

CREATE DATABASE sampledb;
USE sampledb;

テーブルの作成

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100)
);

データの挿入

INSERT INTO users (name, email)
VALUES ('Taro', 'taro@example.com'),
       ('Hanako', 'hanako@example.com');

データの取得

SELECT * FROM users;

出力例:

+----+--------+-------------------+
| id | name   | email             |
+----+--------+-------------------+
|  1 | Taro   | taro@example.com  |
|  2 | Hanako | hanako@example.com|
+----+--------+-------------------+

このようにして、テーブル作成からデータ挿入、参照までの基本的な流れを一通り体験できます。


7. データの永続化(ボリュームの利用)

実は、コンテナを削除するとデータベースの中身も消えてしまいます。
学習段階では問題ありませんが、開発で使う場合は永続化が必要です。

Dockerではボリュームを使うことで、データを保持できます。

docker run --name mysql-persistent \
  -e MYSQL_ROOT_PASSWORD=rootpass \
  -v mysql_data:/var/lib/mysql \
  -p 3306:3306 \
  -d mysql:8.0

これで、MySQLのデータがmysql_dataというボリュームに保存され、
コンテナを削除してもデータが残るようになります。


8. 次のステップへ

MySQLをDockerで動かせるようになったら、次のステップとして以下を試してみるとよいでしょう。

  • Docker ComposeでMySQL+Webアプリの連携環境を構築
  • phpMyAdminを追加してGUIでデータベースを操作
  • ユーザーと権限の管理を理解する
  • バックアップ/リストアの自動化を実践する(mysqldump活用)

これらを組み合わせることで、より実践的な開発・運用に近づきます。


9. まとめ

この記事では、Dockerを使ってMySQLを構築し、SQL操作の基本をハンズオンで学びました。
Dockerを利用することで、わずか数分でデータベース環境を立ち上げ、自由に試行錯誤できるようになります。

MySQLはアプリ開発の基礎を支える重要な要素です。
Dockerを活用して環境構築の手間を省きながら、データベース操作の理解を深めていきましょう。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です