Linux環境で、Dockerコンテナを使ってMySQLを起動する方法をまとめてます。
CentOSのMySQLインストール
Red Hat Linux、Fedoraも同様の手順になります。
MySQLのパッケージは、クライアントツール、サーバー、関連ツール、ライブラリなどにわかれています。yumコマンドを使って、インストールするパッケージを指定します。
sudo yum install mysql mysql-server mysql-libs mysql-server
以下のコマンドで、MySQL Serverのサービスを開始します。
service mysqld start
最低限のセキュリティ対策をほどこすために、以下のコマンドを実行してパスワード設定や匿名ユーザの削除などをおこないます。
mysql_secure_installation
サーバを再起動しても、自動的に起動・停止できるようにするためにはchkconfigを使用します。
chkconfig --levels 235 mysqld on
【関連記事】
▶MySQL8.0を Linux(CentOS 8)にインストール&設定する手順
UbuntuのMySQLインストール
Debian、Kubuntuも同様の手順になります。
apt-get install mysql-client-5.7 mysql-server-5.7
インストールをおこなうとサーバーは自動的に起動され、再起動時・シャットダウン時にも自動的に起動・停止します。
最新のMySQLをインストールする場合など、aptリポジトリの追加が必要なケースがあります。
【関連記事】
▶MySQL 8.0をUbuntu 18.04にインストール リポジトリの登録方法は?
Dockerコンテナを使ったMySQLインストール
dockerが使用できるlinux OSでは、MySQL公式のDockerコンテナを使ったインストールが可能です。
下記のコマンドは、MySQL提供の公式コンテナの最新版(mysql:latest)をコンテナ名mysql1、IPアドレス192.168.0.10で起動し、初期rootパスワードをランダムに決めて、mysqldを起動するコマンドです。
docker run -d --name=mysql1 --ip=192.168.0.10 -e MYSQL_RANDOM_ROOT_PASSWORD=true mysql:latest mysqld
下記コマンドで、ランダムに決まる初期パスワードを確認します。MySQLが起動するまで時間がかかるので、パスワードが表示されるまで下記コマンドを何度か実行する必要があります。
$ docker logs mysql1 2>&1 | grep PASSWORD 2019-11-15 14:46:46+00:00 [Note] [Entrypoint]: GENERATED ROOT PASSWORD: cahng6teekahsee8AhdoosuLievee0fo
下記コマンドで、mysqldのバージョンを確認できます。
$ docker exec -it mysql1 mysqld --version /usr/sbin/mysqld Ver 8.0.18 for Linux on x86_64 (MySQL Community Server - GPL)
MySQLサービスが起動したら、下記のコマンドでデータベースの接続ができるかどうか確認します。
$ docker exec -it mysql1 mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.18 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> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec) mysql>
Dockerコンテナの自動起動設定
下記コマンドを実行すると、サーバの再起動時にも自動的にコンテナが起動するようになります。
$ docker update --restart=always mysql1
Dockerコンテナの停止
手動でDockerコンテナを停止するには、docker psコマンドで現在起動中のコンテナのID(CONTAINER ID)を、確認します。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bf33a8d06fb7 mysql:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 3306/tcp, 33060/tcp mysql1
docker stop コンテナIDを実行し、コンテナを停止します。
docker stop bf33a8d06fb7
その後、再度起動する予定もなく、廃棄したい場合は以下を実行します。
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N]
yと入力すると、停止中のコンテナが全て廃棄されます。
Dockerコンテナの起動
docker start <コンテナIDまたは、コンテナ名>で、いったん停止したコンテナを起動できます。
docker start mysql1
または、以下のコマンドで起動できます。
docker start bf33a8d06fb7
なお、コンテナIDは特定できる箇所まで入力すればOKです。例えばコンテナが一つしかなければ、「docker start b」だけで起動が可能です。
まとめ
- CentOS系のMySQLインストールは、yumコマンドでインストール
- Ubuntu系のMySQLインストールは、apt-getコマンドでインストール
- dockerが使えるLinuxでは、MySQL提供の公式コンテナを使ってMySQLサービスを実行可能