🙂

Docker ComposeとSequel AceでシンプルなMySQL実行環境を用意する

2024/02/12に公開

はじめに

気軽にMySQLをいじれる環境がほしかったので簡単に実行環境を作ってみた内容のメモです。

ファイル構成は以下のようになってます。

simple-mysql-dev
 ┣ docker-compose.yml
 ┗ data

t-shiratori/simple-mysql-dev

docker-compose.ymlを作成する

docker-compose.yml
version: '3'

services:
  mysqldb:
    image: mysql:8.3
    container_name: mysql_container
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: dev
      MYSQL_USER: dev
      MYSQL_PASSWORD: dev
      TZ: 'Asia/Tokyo'
      LANG: ja_JP.UTF-8
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - '4306:3306'
    expose:
      - 4306
    platform: linux/arm64

日本語対応について

DockerのMySQLがそのままだと日本語のデータを登録することができなかったので、environment にLANG: ja_JP.UTF-8を設定しています。これで文字コードがutf8mb4になり日本が登録できるようになりました。

コンテナを起動する

docker compose up

起動状況を確認

simple-mysql-dev $ docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
mysql_container     "docker-entrypoint.s…"   mysqldb             running             0.0.0.0:4306->3306/tcp

CLIでコンテナのMySQLにアクセスして確認する

docker exec -it mysql_container bash でコンテナにアクセス

simple-mysql-dev $ docker exec -it mysql_container bash
bash-4.4# 

mysql -h 127.0.0.1 -P 3306 -u root -pでMySQLに接続

simple-mysql-dev $ docker exec -it mysql_container bash
bash-4.4# mysql -h 127.0.0.1 -P 3306 -u root -p
Enter password: 

パスワードを聞かれるので docker-compose の environment で設定したパスワードを入力します。
認証が通ればMySqlに接続されます。

simple-mysql-dev $ docker exec -it mysql_container bash
bash-4.4# mysql -h 127.0.0.1 -P 3306 -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.3.0 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

言語設定を確認する

mysql> show variables like '%char%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.3/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.03 sec)

認証方式の設定を確認する

mysql> select user, host, plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| dev              | %         | caching_sha2_password |
| root             | %         | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
6 rows in set (0.01 sec)

MySQL5.7までの認証プラグインはmysql_native_passwordがデフォルトだったようですが、MySQL8からcacing_sha2_passwordがデフォルトで使われるようになったようです。

登録されているデータベースを確認する

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| dev                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.03 sec)

クライアントツールを導入してDBを操作してみる

「Sequel Ace」が良さそうだったのでこちらを使います。

https://l.pg1x.com/Pwfu2StgK66Zsfy67

起動してデータベースに繋ぐ設定を入力し、設定を「Add to Favolites」で保存しておくと後々また接続する際に便利です。
「Connect」ボタンを押すとデータベースサーバーに接続されます。

左上のデータベース選択のプルダウンで対象のデータベースを選択します。
これでデータベースの接続完了。

テーブルを作成してみる

右上の「クエリ」を押すとSQLの入力パネルに切り替わります。
実行したいSQLを入力して、右下の「現在の実行」を押すと実行されます。

左側に作成されたテーブルが表示されます。
左上の「内容」のパネルでテーブル内容を確認できます。

データを登録してみる

同じようにクエリパネルでSQLを使って登録します。

左上の「内容」のパネルで登録内容を確認できます。
下のバーにある更新ボタンを押すとテーブルの内容が最新状態に更新されます。

参考

Discussion