LoginSignup
8
8

More than 1 year has passed since last update.

【初学者向け】Dockerでデータベースを操作してみよう!(MySQL)

Last updated at Posted at 2023-04-29

はじめに

この記事ではデータベースの操作を練習したい初学者の方に向けて、Dockerを用いて環境構築を行う手順を紹介します。
サクッと環境構築ができて、データベースの操作も学べ、しかもDockerの勉強にもなるような、一石三鳥の記事となっています。
では、やっていきましょう!( ^ω^ )

注意!
コマンドの中に () がついている箇所が複数あります。
それらについてはご自身で指定して、忘れないようにメモなどするようにしてください。
また複数行にわたるコマンドの際は、エディタで編集してから貼り付けるなどしてください。
※ 一応、()を外しただけでもちゃんと動くようにはなっています。

1. Docker Desktopのインストールと実行

まず「Docker Desktop」をインストールする必要があります。
以下のリンクから最新版をダウンロードしてインストールしてください。

Download Docker Desktop | Docker

インストールが完了したら、Docker Desktopを起動してください。
起動すると画面上部のバーにDockerのアイコンが表示されます。

2. MySQLのイメージを取得

次にMySQLのイメージを取得します。ターミナルで以下のコマンドを実行して、最新のMySQLイメージを取得しましょう。

docker pull mysql:latest

ちゃんとpullできているか、下記のコマンドで確認してみましょう。

docker images

REPOSITORYのところに mysql があればOKです!

3. ボリュームの作成

MySQLに投入したデータを永続化するために、以下のコマンドでボリュームを作成します。

docker volume create (mysql-data)

4. MySQLコンテナの起動

以下のコマンドを実行して、MySQLのコンテナを起動します。このコマンドでは、MySQLのデータを永続化するために先ほど作成したボリュームを使用しています。また、環境変数を設定してMySQLの初期設定を行っています。

docker run -d \
  --name (mysql-container) \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=(your_root_password) \
  -e MYSQL_DATABASE=(your_database_name) \
  -e MYSQL_USER=(your_username) \
  -e MYSQL_PASSWORD=(your_password) \
  -v (mysql-data):/var/lib/mysql \
  mysql:latest
各オプションの簡単な解説
  • -d: コンテナをバックグラウンドで実行
  • --name: コンテナの名前を設定
  • -p: ポートのマッピング(ホスト側のポート:コンテナ側のポート)
  • -e: 環境変数の設定
  • -v: ボリュームのマッピング (ボリューム名:コンテナ内のディレクトリ)
  • mysql:latest: 使用するDockerイメージ名

以下のコマンドで、ちゃんとコンテナが起動しているか確認してみましょう。

docker ps

NAME に mysql-container があればOKです!

5. MySQLへ接続

コンテナ内のMySQLサーバーに接続するには、まずdocker execコマンドを使ってコンテナ内でシェルを実行し、次にそのシェルでMySQLクライアントツールを実行します。
以下のコマンドを実行して、MySQLサーバーが動作しているコンテナに接続します。

docker exec -it (mysql-container) bash
各オプションの簡単な解説
  • -it: 対話的に操作するためのオプションです。
  • (mysql-container): 接続するコンテナの名前です。
  • bash: コンテナ内で実行するシェルコマンドです。

コンテナ内のシェルが開いたら、mysqlコマンドでMySQLクライアントツールを実行して、MySQLサーバーに接続します。
以下のコマンドを実行すると、パスワードの入力を求められますので、(your_password)を入力してください。

mysql -u (your_username) -p
各オプションの簡単な解説
  • -u (your_username): MySQLサーバーに接続する際のユーザー名を指定します。
  • -p: パスワードを入力するプロンプトが表示されることを指定します。このオプションを指定すると、コマンドを実行した後にパスワード入力が求められます。

これでコンテナ内のMySQLサーバーに接続することができました。
対話型のクライアントツールを使って、データベースの操作ができます。

試しに、以下のコマンドでMySQL内のデータベースの一覧を表示してみましょう。

SHOW DATABASES;

注意: 今後、SQLコマンドはセミコロン(;)で終わらせて実行してください。

先ほど作成した(your_database_name)があればOKです!(o^^o)

実際にテーブルを作って、データを入力してみよう!

試しにユーザーを管理する usersテーブル を作成してみましょう!
カラムは id, name, age, gender, countory とします。

  • 使用するデータベースを選択

    USE (your_database_name);
    
  • usersテーブルを作成

    CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      age INT NOT NULL,
      gender ENUM('male', 'female') NOT NULL,
      country VARCHAR(255) NOT NULL
    );
    
  • usersテーブルにサンプルデータを投入

    INSERT INTO users (name, age, gender, country) VALUES
      ('Alice', 30, 'female', 'United States'),
      ('Bob', 25, 'male', 'Canada'),
      ('Charlie', 22, 'male', 'United Kingdom');
    
  • テーブルの中身を確認してみよう!
    テーブルの内容を表示するには、SELECT文を使います。
    以下のコマンドは、指定されたテーブルのすべてのカラムとすべての行を表示します。

    SELECT * FROM users;
    

usersテーブルのすべてのカラムと行が表示されましたね。

ではexit;コマンドでMySQLサーバーから抜けて、exitコマンドでコンテナからも抜けて、docker stop (mysql-container)コマンドでコンテナを停止しましょう。

またDBをいじる時は、docker start (mysql-container)でコンテナを起動して、
docker exec -it (mysql-container) bashでコンテナの中に入り、
mysql -u (your_username) -pでMySQLサーバーにログインしましょう。

最後に

お疲れ様でした!
以上で、Dockerを使ってMySQLの環境を構築する手順が完了となります。

データベースが絡むと途端に難しくなりますよね〜。
でも避けては通れない分野なので、お互い頑張りましょう!
それではまた!(^_^)ノシ

8
8
0

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
8
8