Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

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サービスを実行可能

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。