MySQLの実行環境をDockerで作る(Workbench接続)

MySQL Docker

この記事ではMySQLの実行環境をDockerで作った後に、MySQL Workbenchで接続してテーブルを作成してみるまでをやっています。
Docker Composeファイルを使って、MySQLコンテナを起動してみています。

動作を確認したOSはWindows10(Docker Desktop)で、MySQLの8.0.33を使っています。

MySQLの実行環境をDockerで作る

それでは、MySQLの実行環境をDockerで作成していきます。
最初にファイルとディレクトリの構成を説明して、それぞれのファイルを作成します。

ディレクトリ構成

ディレクトリ構成は下記のようになりました。

docker-compose.yml
my.cnf
mysql_log/

mysql_log/はディレクトリです。
ログを出力するためのディレクトリとして用意してみました。

ファイルとしては、docker-compose.ymlファイルと、MySQLの設定ファイル(my.cnf)を用意します。

Docker Composeファイルを用意する

それでは、docker-compose.ymlファイルを用意します。
今回は下記のように作ってみました。

version: '3.8'
services:
  db:
    image: mysql:8.0.33
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - mysql:/var/lib/mysql
      - ./my.cnf:/etc/mysql/my.cnf
      - ./mysql_log:/var/log/mysql
volumes:
  mysql:
    name: mysql-db-volume
    driver: local

Dockerイメージとしては、MySQLの8.0.33(2023/05時点での最新)を使っています。
rootユーザーのパスワードをpasswordにしました。

そして、Dockerのvolumeを使って、データが永続化されるように設定しています。
通常だとコンテナを停止すると、データも消えてしまいます。

設定ファイル(my.cnf)を用意する

設定ファイルには、とりあえず実行したSQLをログとして、すべて残すようにしました。

[mysqld]
general_log=1
general_log_file=/var/log/mysql/query.log

不要な場合は空ファイルでもよいかと思います。

起動する

下記の3つのファイルが用意できたら起動してみましょう。

・`mysql_log/`ディレクトリ
・docker-compose.ymlファイル
・my.cnfファイル

まず、Docker Desktopを起動した後に、3つのディレクトリとファイルを置いたディレクトリに移動します。
そして、下記コマンドで起動することができます。

docker-compose up -d

docker-composeコマンドでupを指定して起動しました。
これで、カレントディレクトリに存在するdocker-compose.ymlを参照してコンテナを作ってくれます。
-dオプションをつけることで、バックグラウンドで処理してくれます。

実行して、下記のように問題なく起動できれば成功です。

> docker-compose up -d
[+] Running 2/2
 ✔ Network mysql8-docker_default  Created                                                                                                                 0.0s 
 ✔ Container mysql8-docker-db-1   Started

停止するには?

環境を停止するには、docker-composeコマンドにdownを指定します。

docker-compose down

実行すると、下記のようにコンテナとネットワークがRemovedされます。
特にエラーが出なければ問題なく停止できています。

> docker-compose down
[+] Running 2/2
 ✔ Container mysql8-docker-db-1   Removed                                                                                                                 1.8s 
 ✔ Network mysql8-docker_default  Removed

DockerコンテナにMySQL Workbenchから繋いでみる

MySQL WorkbenchはGUIのMySQLクライアントです。
公式から配布されていて、こちらからダウンロードすることができます。

MacでもWindowsでも使うことができます。
ダウンロードしたらインストールしてください。

インストールして起動すると、下記のように表示されます。

MySQL Workbench Welcome画面

接続先の設定を作成します。
MySQL Connectionsのプラスマークをクリックします。

すると、セットアップ画面が表示されます。

MySQL Workbench 接続設定画面

Connection Nameは、接続先を識別するための名前なので、わかりやすい名前を入れておきます。

Hostnameは接続するコンピュータです。ローカルなので127.0.0.1のままでよいです。
Portもdocker-compose.ymlファイルに3306を指定しているので、そのままで良いです。

UsernameもrootのままでOKです。
Passwordの項目で、「Store in Vault...」をクリックするとパスワードを入力する画面がでてくるので、docker-compose.ymlファイルで指定したpasswordを設定します。

OKをおしてパスワードをいれたら、またOKボタンをおして、接続先のセットアップを完了します。

セットアップが完了すると、下記のように作成した接続先が表示されます。
クリックすると接続してくれるので、Docker環境を起動して接続してみてください。

MySQL Workbench 接続先設定完了

起動すると、下記のようにエラーが出ずにSQLが実行できる状態になります。

MySQL WorkbenchのSQL実行画面

これで、MySQLでSQLが実行できる状態になりました。

データベースを作成してみる

データベースを作ってみます。
クエリを入力するエリアに、下記のSQLを入力して実行します。

CREATE DATABASE test;

MySQL WorkbenchでCreate Database

実行すると、下記のようにSQLが実行できた状態になり、最新情報を取得するとデータベースが作成できてることが確認できました。

MySQL Workbenchでデータベース作成完了

my.cnfファイルが読み込めないとき

my.cnfファイルが読み込めないときに、下記の警告が発生していました。

[Warning] World-writable config file '/etc/mysql/my.cnf' is ignored.

このときにはmy.cnfファイルのプロパティを開いて、読み込み専用にしてあげるとファイルの設定が読み込めるようになりました。

MySQLの実行環境をDockerで作る方法まとめ

今回はMySQLの実行環境をDockerで作成していきました。
記事の内容をまとめると、下記のようになります。

・Docker Composeファイルを作成して、MySQLのコンテナを作成した。
・docker-composeコマンドで、作成したコンテナの起動や停止ができた。
・MySQL WorkbenchからMySQLにつないで、データベースを作成した。

コメント

タイトルとURLをコピーしました