RDBMSとしてMariaDBをインストールする(CentOS7.2 | ubuntu16.04)

/

導入

インターネット上のサーバで公開されるコンテンツのデータの管理にはRDBMS(リレーショナルデータベースマネジメントシステム)が広く使われており、WordPressやWebアプリ開発用のフレームワークを利用する際にはWebサーバーなどと同様に必須の要素となっています。
RDBMSの中ではMySQLが歴史もあって広く普及していますが、少し前からMariaDBに移行している企業やプロジェクトが目につくようになっています。

MariaDBはシェアを伸ばしており今後も利用する場面が増えそうなので今回CentOSとubuntuでそれぞれインストールを実行してみました。

MariaDB

MariaDBは紆余曲折あって現在オラクルが所有しているMySQLからフォークされる形で開発されたRDBMSです。MySQLの元々の開発に携わっていたエンジニアによって立ち上げられたプロジェクトのため、現在のMySQLの代わりとして使えるRDBMSとして採用されるケースが増えているようです。
イメージキャラクターはアシカ。

MariaDB Foundation

実行環境

CentOS7.2
ubuntu16.04LTS

インストール

参照: 入手とインストールとアップグレード/MariaDB Foundation

リポジトリの追加

MariaDBはubuntuとCentOSのパッケージ管理システムからそのままインストールする事も可能ですが、その場合利用できるバージョンが古い場合があるのでMariaDB Foundationが公開しているリポジトリを追加します。

Centos7.2

$ vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
# MariaDB 10.1 CentOS repository list - created 2016-10-23 06:46 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
$ sudo yum install MariaDB-server MariaDB-client

ubuntu16.04

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.1/ubuntu xenial main'

sudo apt update
sudo apt install mariadb-server

ubuntuの場合インストールの実行時にrootのパスワードを設定の確認が表示されます。あとから紹介する方法で設定することも出来ますが、この段階でパスワードを入力すればrootのパスワードを設定する事が出来ます。

Downloads Setting up MariaDB Repositories/MariaDB Foundation

コマンドの実行

MariaDBはインストール時には「mariadb-server」などの名前を指定する必要がありましたが、インストール後のコマンドの実行の際には「mysql」コマンドを使って入力を行います。

$ mysql --version

mysql  Ver 15.1 Distrib 10.1.18-MariaDB, for Linux (x86_64) using readline 5.1

設定

MariaDBは大抵はデフォルトの設定のままで起動する事が出来ますが、CentOSであれば設定ファイルのテンプレートとして my-large.cnf.sh my-medium.cnf.sh や my-small.cnf.sh などが用意されているので、名前を変更してMariaDBが参照するディレクトリに設置することで設定の変更を行う事が出来ます。
今回は設定ファイルコピーした後に文字コードの設定を追加しました。

なおMariaDBが参照する設定ファイルのスコープはこちらで確認出来ます。

$ sudo mkdir /etc/mysql
$ sudo cp -p /usr/share/mysql/my-small.cnf /etc/mysql/my.cnf
$ sudo vi /etc/mysql/my.conf
...
[mysqld]
...
character-set-server = utf8

サービスの起動

インストールと設定が済んだらMariaDBのサービスを起動します。

# サービスの起動
$ sudo  systemctl start mysql.service
# サービスの自動起動を設定
$ sudo  systemctl enable mysql.service
# ステータスの表示
$ sudo  systemctl status mysql.service

インストールや設定に問題がなければ、MariaDBが起動しステータス表示のActiveの項目に「Active: active (running)」と表示されます。

mysql_secure_installation

mysql_secure_installationコマンドを実行するとrootパスワードの設定やインストール時にあらかじめ作成されているテストデータベースの削除などを行えます。

$ mysql_secure_installation

コマンドを実行するとMariaDBのrootパスワードを聞かれるので設定をしていなければ空白を、ubuntuでインストール時に設定していた場合などには設定したパスワードを入力してエンターを押します。

あとは対話形式によってパスワードの(再)設定やrootへのリモートからのアクセスの禁止などの設定が行えます。今回はrootのパスワードを設定し、その他の選択肢では全て「Y」を実行しました。

設定終了後は設定したパスワード使ってMariaDBにログイン出来るようになります。

$ mysql -u root -p

Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.18-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> \q
Bye

あとがき

サン・マイクロシステムズを買収する事でJavaなどともにMySQLを運営することになったオラクルですが、同社はこれ等らの人気のあったプロジェクトを自身のコントロール化に置きがちで、権利に対しても厳しい姿勢を取る事が多いためエンジニアから評判が良くない部分もありMariaDBが開発された経緯にはそこら辺りの事情が関係しているようです。

オラクルと訴訟を行っていたGoogleもそうした事態に嫌気がさしたのかAndoroidアプリの開発言語としてOpenJDKへの切り替えを行ったり、MariaDBへの移行などオラクル離れとも言える行動をとっています。こうした影響力のある企業が採用を発表している上にMySQLの元々の開発者が携わているという信用もあってかMySQLからMariaDBへの移行を進めている企業やプロジェクトも増えている原因の一つのようです。

存在感を増すMariaDBですが、運営組織がしっかりした体制を取っているようですしプロジェクトの初期段階からエンタープライズ向けにも力を入れている事もあってか、ドキュメントもしっかりしている上に日本でMySQLのシェアが高いせいか日本語訳も充実していて必要な情報も手に入りやすいのでMySQLユーザーは移行検討してみる価値はあると思います。

参照

グーグルがMySQLを切り捨ててMariaDBを採用/ReadWrite.jp
Fedora 19からはMySQLに代わりMariaDBを標準に採用「オラクルはMySQLプロジェクトをさらに閉鎖的にしている」。MariaDB Foundationもすでに設立/Publickkey
Google、Android NでJava言語ライブラリをOpenJDKに変更へ/ガジェット通信