Blow Up by Black Swan

DockerでMySQL環境を構築する

今回は、Docker上でMySQL環境を構築したので、それについてまとめようと思います。英語の公式ドキュメント通りにやっただけなので、まさに備忘録という感じです。本当は、Docker環境下でubuntuイメージからスタートし、自分なりの環境を持ったMySQL環境を構築し、かつdockerfileに落とし込むところまで行きたかったのですが、無念・・・どうしてもできませんでした・・・。

4日くらいかけて環境構築できなかったので、さすがにそれは諦め、MySQL組織が提供する公式imageを利用することにしました。おそらく、最新バージョンのMySQLの公式ドキュメントは英文のものしか出ていないと思うので、ドキュメント通りにDocker上にMySQL環境を作りたいのに、英語があんま得意でない、という方のお役に立てればと思っています。

なお、今回の構築環境は以下になります。

  • PC: Macbook
  • Docker: ver18.06.1
  • docker image: mysql/mysql-server(MySQLの公式image)
  • MySQL: ver8.0.12(公式imageのlatestに該当)
  • MySQL公式ドキュメント 該当ページ: 2.5.6 Deploying MySQL on Linux with Docker
  • 備考: 今回の環境構築は、MySQL Community版に基づいており、エンタープライズ版の環境構築とは異なるところがあります

1. イメージの取得

$ docker pull mysql/mysql-server:latest

2. コンテナの生成

$ docker run --name mysql -d mysql/mysql-server

ここでのポイントは以下になります。

  • -d…バックグラウンドでの実行を推奨。フォアグランドに指定すると正常に起動しない
  • パスワードは自動生成されるため、この時点で環境変数を指定して入力する必要はない(3.以降参照)
  • mysql serverは自動的に立ち上がるようになっている

パスワードは自動生成されたのち、下記で記載しているように、変更することができます。

3. パスワードの確認

$ docker logs mysql

このコンテナは、バックグラウンドで実行されているため、ターミナルに進捗画面が出てきません。そのため、dockerのlogsコマンドを利用し、実行画面を見ます。その中の”GENERATED ROOT PASSWORD”という項目にパスワードが記入されています。

4. mysql cliantによるmysql serverへのアクセス

$ docker exec -it mysql mysql -u root -p

ここでのポイントは以下になります。

  • exec…メインプロセスとは別のプロセスでmysql serverにアクセスする必要がある
  • mysql -u root -p…rootユーザでアクセス

上記コマンドを実行するとパスワード入力画面が出るため、3.で確認したパスワードを入力すると、mysql serverのターミナル画面にいきます。コンテナのターミナル部分とは異なるので、その点はややこしいかと思いますが、mysqlのターミナル画面ではmysql>というプロンプトが出ます。mysql cliantは、このターミナルなど、mysql serverとユーザとを繋ぐインターフェイス部分に関するプログラム一式のことを指します。

5. パスワードの変更

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>’;

<password>という部分に任意のパスワードを入力することで、パスワードの変更が完了です。これにより、事前準備が完了し、MySQLを使用できるようになります。

まとめ

以上が、MySQL8.0の公式ドキュメントで言及されているdocker環境下でのMySQL環境の構築方法です。ubuntuからの実装はいずれまた挑戦して見たいと思います。

読んでくださった方、ありがとうござました。