A5:SQL Mk-2

開発のこと、日々のこと

CentOS 7.4のdockerにMySQLとMariaDBを入れた話

| 0件のコメント

VMWare 上のCentOS 7.4 に Oracle Databaseと Microsoft SQL Server 2017とIBM Db2 Express-CとPostgreSQLとFirebirdとMySQLとMariaDBを入れてみました。

パクリ記事ばっかりになりそうな気もしなくもないですが、とりあえず、MySQLとMariaDBから。

参考: DockerでさくっとPostgreSQL/MySQL/MariaDBを触る方法 

参考 : CentOS7にDockerをインストールする

 

環境は以下のような感じです。
OS : CentOS Linux release 7.4.1708 (Core) (VMware Workstation上の仮想マシン)
メモリ : 4GB 割り当て

MySQLとMariaDB以外のデータベースはCentOS上にそのままインストールしたのですが、MySQLとMariaDBは共存が面倒そうだったので、Dockerをインストールし、その上で動作させることで共存させています。
参考(OS上で直接共存させる方法): Installing MariaDB Alongside MySQL

 

■Dockerのインストール

 

■リポジトリ追加

 

■yumのパッケージインデックスを更新

 

■インストール

 

■自動起動の設定と起動

 

■自分のユーザーでDokerを起動できるようにする

※matsubaraの部分は適宜書き換えること

 

MySQLとMariaDBは永続化のためにデータボリュームを作りつつ docker run します。

MySQLとMariaDBのDocker上で利用できるバージョンはdockerのオフィシャルサイトから確認できます

MySQL : https://hub.docker.com/_/mysql/

MariaDB : https://hub.docker.com/_/mariadb/

 

MySQLとMariaDBのインストール手順はほぼ同じです。ただし、MySQLとMariaDBはデフォルトではどちらも3306ポートを使うため、そのままDockerホストにマップするとバッティングします。各コンテナのポートをマップするためにポート番号は以下のルールにしてみました。

MySQL : 33xy

MariaDB: 133xy

x … メジャーバージョンの下1桁

y … マイナーバージョンの上1桁

つまり、MariaDB 10.2のポートは Dockerホストの 13302に、MySQL 5.7のポートはDockerホストの3357にマップします。

 

Docker上で動作するMySQLやMariaDBを操作するために、あらかじめMySQLのクライアントだけをCentOS上に入れておきます。

■MySQL クライアントの導入

 

以下mariadb 10.2のインストール

 

■コンテナの3306ポートを13302にマップしてMariaDBを開始(docker run)

※ボリューム(mariadb_10.2_data)を作成しつつ、docker run している

※rootパスワードのXXXXXXXXは適宜変えること

 

■データベース(UTF8MB4_DB)の作成とユーザー(matsubara)の作成及び権限の設定(雑・セキュアではない)

mysqlコマンドを実行するとき、-h オプションを付けない場合、localhostに対してログインします。MySQLクライアントは接続先ホストが localhostの場合(-h オプションを指定しない場合も含む)tcpプロトコルでなくソケット接続を使用し、–portオプションを無視するらしいです。このため、「–protocol tcp」を付加するか、「-h 127.0.0.1」を指定してTCPプロトコルで接続します。

 

■サービスの設定ファイル作成(自動起動のために)

Type=simpleはデフォルトなので実は要らないですが、dockerコマンドはRemainAfterExitを付けないと、うまく自動起動しませんでした。どうも、起動しないというより、正しく起動できたことをうまく検知できなくて、直後にサービス停止コマンド(ExecStop)が実行されてしまうようです。

Type=forkingやType=oneshotも試したのですが、うまくいきませんでした。

 

■サービスの設定ファイルをsystemdに読み込ませる。

 

■サービスを自動起動に設定

自動起動しない場合は要らない

 

以下MySQL 5.7 のインストール

 

■コンテナの3306ポートを3357にマップしてmysqlを開始(docker run)

※rootパスワードのXXXXXXXXは適宜変えること

 

■データベース(UTF8MB4_DB)の作成とユーザー(matsubara)の作成及び権限の設定(雑)

 

■サービスの設定ファイル作成(自動起動のために)

 

■サービスの設定ファイルをsystemdに読み込ませる。

 

■サービスを自動起動に設定

 

以上です。…あと、調子に乗ってmysql 5.5 と MariaDB 5.5, MariaDB 10.1もインストールしてしまいました。

(自動起動はしません。)

コメントを残す

必須欄は * がついています