MySQL環境構築
MySQLの環境をさっと作りたいけど、ローカルにインストールするのは面倒だったり、エラーでうまくいかなかったり、環境構築って面倒ですよね!
そんな時はこれから紹介するDockerを使うと便利です。
Dockerを使えば、環境構築が簡単になるだけでなく、複数のMySQLを立ち上げる事もできるので、プロジェクト毎に使い分けるってことも可能です!
Dockerをまだインストールしていない方はこちらからインストールしてください!
Macでの手順はこちら。
Ubuntuでの手順はこちら。
MySQLの構築
実行コマンド
それではDockerでMySQLを構築するためのコマンドを見ていきます。
コマンドはこちらです!めちゃくちゃ簡単ですね!!
$ docker run --name mysql -v `pwd`/docker/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_DATABASE=database -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql mysql:5.7
実行コマンド補足
- mysql:5.7という記述でMySQL5.7を構築している
- カレントディレクトリにdockerというディレクトリを作成してMySQLのボリュームをマウントしている
- MYSQL_DATABASEで、データベース名を指定し作成している
- MYSQL_ROOT_PASSWORDでrootユーザのパスワードを指定している
- MYSQL_USERで一般ユーザを作成している
- MYSQL_PASSWORDで一般ユーザのパスワードを指定している
また今回はMySQL5.7で作成していますが、別のバージョンを指定して構築することも可能です。
カレントディレクトリにMySQLのボリュームをマウントしているので、コンテナ停止後も再度このディレクトリを指定して起動すれば、データを永続化させることが可能です。
データを初期化したい場合は、このマウントされたディレクトリを削除すればOKです。
上記だと日本語が使えなかったので、以下のようにした
MySQLのconfig追加
docker/mysql/config/my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
skip-character-set-client-handshake
default-storage-engine=InnoDB
innodb_file_per_table=1
innodb_large_prefix=1
innodb_file_format=Barracuda
innodb_default_row_format=DYNAMIC
default_password_lifetime = 0
slow_query_log = 1
long_query_time = 5
slow_query_log_file = /var/log/mysql-slow-query.log
[mysql]
auto-rehash
default-character-set = utf8mb4
[mysqldump]
default-character-set = utf8mb4
Dockerfile追加
docker/mysql/Dockerfile
FROM mysql:5.7.12
COPY ./docker/mysql/config/my.cnf /etc/mysql/conf.d/my.cnf
コマンド実行
ビルド
$ docker build \
--rm \
--no-cache \
-t my_mysql \
-f docker/mysql/Dockerfile .
実行
フォアグラウンド
docker run -it -p 8080:3000 my_mysql
バックグラウンド
docker run -itd --name mysql -v `pwd`/docker/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_DATABASE=database -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql my_mysql
接続方法
接続コマンド
接続する際は、起動しているMySQLコンテナのIPなどを調べても良いですが、面倒なので、-h 0.0.0.0のようにすると簡単に接続できます。
$ mysql -h 0.0.0.0 -uroot -p'root'
こんな感じでMySQLに接続できればOK。
$ mysql -h 0.0.0.0 -uroot -p'root'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
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>
Dockerコマンドで指定したdatabaseという名前のデータベースが作成されていればOKですね!
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| database |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.04 sec)
まとめ
今回はDockerでMySQLを簡単に構築しました!
Dockerを使うと環境構築が圧倒的に楽になりますし、実質Webエンジニアとしては必須のスキルなので学習してマスターできるといいですね!
コメント