MySQL道普請便り

第5回 Dockerで複数バージョンのMySQLを開発環境に用意する

この記事を読むのに必要な時間:およそ 3 分

最新版のMySQLコンテナイメージをダウンロードする

起動画面の中央上部にある「Search for Docker images from DockerHub」にMySQLと入力してみましょう。そうするとDockerHub内にあるmysqlのコンテナに関して検索が始まります。

図8 検索結果画面

図8 検索結果画面

今回はRecommendedの中にあるofficialを利用しますが,その他にもDockerHubに自作のコンテナを登録している場合は,そちらを選択することもできます。

CREATEを押すとmysqlのlatestのバージョンに関してDockerコンテナのダウンロードが始まります。

図9 ダウンロード画面

図9 ダウンロード画面

ダウンロードが完了すると自動でDockerのコンテナが実行されます。しかし,下のようにログが表示されています。

図10 初期画面

図10 初期画面

何やらエラーメッセージのようなものが表示されています。

エラーメッセージの内容

Database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?

内容を読んでみるとrootパスワードが設定されていないというエラーメッセージが表示されているので,次ではちゃんと起動ができるように設定を行っていきます。

Dockerイメージの設定を変更する

右上のSettingsからメニューを開くと,General, Ports, Volums, Advancedの4つのメニューが開きます。

図11 設定画面

図11 設定画面

設定できる項目や内容は以下の表のようになります。

名前設定できる項目の種類
Generalコンテナ名やDockerで起動するときの環境引数をここで指定できます
Ports外部のネットワークから接続する場合に,IPとPortの設定を確認変更することができます。
Volumsコンテナがマウントするディレクトリを選択することができます。
AdvancedKitematicを終了した時のVMの扱いなどを設定することができます。

今回はrootパスワードを設定したいのでGeneralのメニューからパスワードを引数として渡してあげます。Generalのメニュー内にあるEnviroment VariablesにMySQLのDockerのイメージ起動方法に書かれているように,MYSQL_ROOT_PASSWORDを設定してあげます。

図12 パスワード設定

図12 パスワード設定

その他にも今回は使っていませんが,いくつか設定できる項目があるようです。設定できる項目に関しては同じページ内のEnviroment Variablesに記載されてます。

入力が終わったあとSAVEを押すと設定が保存され,再起動が自動で走ります。再起動後の画面が以下のようなものになります。

図13 MySQLの起動画面

図13 MySQLの起動画面

先ほどのエラーとは違うログが出力されていることがわかります。無事起動が完了しました。

mysqlコマンドラインツールを使って繋いでみましょう。ここではhomebrewを使ってインストールをしたものを利用してます。hostのipとportはSettingsのPortから確認できます。

$ mysql -uroot -p -h 192.168.99.100 -P 32776
Enter password:  ← MySQL_ROOT_PASSWODで設定したパスワード
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, 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>

ということで,latest(記事作成時には5.6.27)に無事接続できました!

アプリケーションを使用している人は設定でhostとportをDockerのものに変更してあげるだけで,今まで使ってたアプリケーションから簡単に違うバージョンのmysqlを試すことができるようになります。

続けて,これから皆さんが移行を検討することになるであろう5.7の最新版に接続をしてみたいと思います。

著者プロフィール

木村浩一郎(きむらこういちろう)

株式会社オプティム 技術統括本部のエンジニア。最近はミドルウェア・インフラ周りのことも少しずつ学習しています。趣味は将棋。好きな戦法は四間飛車。

Twitter:@kk2170