CentOS オープンソース

MySQL互換のオープンソースDB MariaDB 10をインストールして利用する

2018年5月25日

centos-mariadb-install-top2

前回の記事でウェブサーバーであるhttpdとアプリケーションサーバーであるphpのインストールが完了しましたので、作成した環境にデータベースとしてあるMariaDB(以前ならMySQL)をインストールする手順を紹介していきます。

Open Source
centos-php73-setup
CentOS 7にPHP 7.3をインストールしてApacheと連携させる方法

以前の記事でCentOS上にSSL対応したApache httpdの環境を作成してPHP7.2をインストールする手順を紹介しました。 2018年5月当時に書かれた、前回の記事からPHPの安定バージョン ...

MariaDB(マリアディービー)とは、オープンソースの代表的なデータベースであるMySQLから派生した同じくオープンソースリレーショナルデータベースシステム(RDBMS)です。ここ最近の主なLinuxディストリビューションで採用されています。
そんなMariaDBですが、CentOSのベースレポジトリではMariaDBは5.5系の古いバージョンしか用意されていません。現在リリースされているものは10系になりますので、10系の最新バージョンである10.2をインストールしていきます。

データベースまで導入が完了すると、ウェブサイトの構築には欠かせないCMSであるwordpressやECサイトを作成するためのCMSであるEC-CUBEなどが利用できる基本的な環境が完成します。それではMariaDBの導入方法を紹介します。

1. MariaDBを導入する環境

MariaDBを導入する環境はPHPの導入手順を紹介した記事

Open Source
centos-php73-setup
CentOS 7にPHP 7.3をインストールしてApacheと連携させる方法

以前の記事でCentOS上にSSL対応したApache httpdの環境を作成してPHP7.2をインストールする手順を紹介しました。 2018年5月当時に書かれた、前回の記事からPHPの安定バージョン ...

で紹介していますが、確認の意味で再度、纏めておきます。基本的な環境は以下の通りです。

  • OSのバージョンはCentOSで最新(2018年5月現在)のバージョン7.5を利用しています。
  • ウェブサーバーとしてApache2.4.6がインストールされています。
  • Apacheは基本的な設定が完了して、テストページが表示されています。
  • ApacheはHTTPS通信に対応した設定が完了しています。
  • PHP 7.2系をインストールしており、テストページまで表示されています。
  • サーバーにはグローバルIPアドレスが割り当てられています。
  • ファイアウォールとしてfirewalldを設定しています。

この環境を前提にMariaDBの導入と設定を進めていきます。

2. MariaDBインストール前の事前準備

MariaDB10系のインストール前に事前準備を行います。作業としては導入する環境にOSデフォルトのMariaDBがインストールされていないかを確認することと、MariaDB10系をインストールするのに必要なレポジトリの追加の二つになります。

2-1. MariaDBバージョン5系のインストール確認

MariaDBの10系をインストールする前の確認事項としてOSのベースレポジトリに含まれるMariaDB5系がインストールされていないことを確認します。MariaDB5系がインストールされていると、設定ファイルやモジュールの読み込み時にコンフリクト(衝突)する可能性があります。以下のコマンドでMariaDB5系がインストールされていないことを確認します。

$ yum list maria*
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: mirror.dmmlabs.jp
* extras: ftp.tsukuba.wide.ad.jp
* remi-safe: mirrors.thzhost.com
* updates: ftp.tsukuba.wide.ad.jp
インストール済みパッケージ
mariadb-libs.x86_64 1:5.5.56-2.el7 @base

上記の結果からmariadb-libsの5.5がインストールされていることが確認できました。10系をインストールする前にこのパッケージを削除します。インストール済みのパッケージを削除するにはyumコマンドにremoveオプションを付与して実行します。
以下のようにパッケージの削除を実行しました。

# yum remove mariadb-libs

以下が実行結果になります。

読み込んだプラグイン:fastestmirror
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mariadb-libs.x86_64 1:5.5.56-2.el7 を 削除
--> 依存性の処理をしています: libmysqlclient.so.18()(64bit) のパッケージ: 2:postfix-2.10.1-6.el7.x86_64
--> 依存性の処理をしています: libmysqlclient.so.18(libmysqlclient_18)(64bit) のパッケージ: 2:postfix-2.10.1-6.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ postfix.x86_64 2:2.10.1-6.el7 を 削除
--> 依存性解決を終了しました。依存性を解決しました

削除中:
mariadb-libs x86_64 1:5.5.56-2.el7 @base 4.4 M
依存性関連での削除をします:
postfix x86_64 2:2.10.1-6.el7 @anaconda 12 M

トランザクションの要約
削除 1 パッケージ (+1 個の依存関係のパッケージ)

インストール容量: 17 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
削除中 : 2:postfix-2.10.1-6.el7.x86_64 1/2
警告: /etc/postfix/virtual は /etc/postfix/virtual.rpmsave として保存されました。
警告: /etc/postfix/main.cf は /etc/postfix/main.cf.rpmsave として保存されました。
削除中 : 1:mariadb-libs-5.5.56-2.el7.x86_64 2/2
検証中 : 1:mariadb-libs-5.5.56-2.el7.x86_64 1/2
検証中 : 2:postfix-2.10.1-6.el7.x86_64 2/2

削除しました:
mariadb-libs.x86_64 1:5.5.56-2.el7

依存性の削除をしました:
postfix.x86_64 2:2.10.1-6.el7

完了しました!

エラーの出力がなく”完了しました!”と表示されれば、mariadb-libsは正常に削除されています。確認のためにインストールされているパッケージを表示するコマンドで確認します。

$ yum list installed | grep mariadb-libs

実行結果として何も表示されなければ、確認は完了です。

2-2. MariaDB専用レポジトリの設定

OSデフォルトではMariaDBの10系に関するパッケージを探してみても見つかりません。試しにyumコマンドでMariaDBのパッケージリストを確認してみます。

$ yum list maria*
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: mirror.dmmlabs.jp
* extras: ftp.tsukuba.wide.ad.jp
* remi-safe: mirrors.thzhost.com
* updates: ftp.tsukuba.wide.ad.jp
インストール済みパッケージ
mariadb-libs.x86_64 1:5.5.56-2.el7 @base
利用可能なパッケージ
mariadb.x86_64 1:5.5.56-2.el7 base
mariadb-bench.x86_64 1:5.5.56-2.el7 base
mariadb-devel.i686 1:5.5.56-2.el7 base
mariadb-devel.x86_64 1:5.5.56-2.el7 base
mariadb-embedded.i686 1:5.5.56-2.el7 base
mariadb-embedded.x86_64 1:5.5.56-2.el7 base
mariadb-embedded-devel.i686 1:5.5.56-2.el7 base
mariadb-embedded-devel.x86_64 1:5.5.56-2.el7 base
mariadb-libs.i686 1:5.5.56-2.el7 base
mariadb-server.x86_64 1:5.5.56-2.el7 base
mariadb-test.x86_64 1:5.5.56-2.el7 base

上記のように表示されるのは5.5系のみで10系は含まれていません。これはOSのベースに用意されているレポジトリにはMariaDBの10系は含まれていなことが原因です。10系をインストールするためにはMariaDB専用レポジトリの追加が必要になります。
現状のレポジトリファイルを確認しておきます。

$ ls -a /etc/yum.repos.d/
CentOS-Base.repo CentOS-Media.repo CentOS-fasttrack.repo remi-php54.repo remi-php72.repo
CentOS-CR.repo CentOS-Sources.repo epel-testing.repo remi-php70.repo remi-safe.repo
CentOS-Debuginfo.repo CentOS-Vault.repo epel.repo remi-php71.repo remi.repo

上記のレポジトリファイルが存在します。ここにMariaDB専用のレポジトリファイルを追加します。

2-2-1. MariaDB用レポジトリファイルの作成

MariaDB公式ウェブサイトに用意されているOS毎のレポジトリファイル作成画面にブラウザでアクセスします。

以下の画面が開きます。

centos-mariadb-install-2-2-1-1

この画面から、本環境に合わせて以下の選択を行い、レポジトリファイルの内容を表示させます。

  • Choose a Distroから、”CentOS”をクリックします。
  • Choose a Releaseから”CentOS 7 (x86_64)をクリックします。
  • Choose a Versionから”10.2 [Stable]”をクリックします。

centos-mariadb-install-2-2-1-2

項目を選択すると、画面にレポジトリファイルの内容が表示されますので、この内容をメモ帳などにコピーします。
次に、viコマンドでレポジトリ用のファイルであるmariadb.repoファイルを作成します。

# vi /etc/yum.repos.d/mariadb.repo

ファイルの内容はウェブサイトからコピーしてきたものを貼り付けます。ここでは以下のような内容になります。最下行のenable=1はウェブサイトの内容には含まれません。ここではレポジトリを有効にするために指定しています。

# MariaDB 10.2 CentOS repository list - created 2018-05-16 09:34 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enable=1

貼り付け終わったらファイル保存します。これでMariaDB用レポジトリファイルの追加は完了です。

2-2-2. MariaDB用レポジトリの追加の確認

レポジトリを追加した後で、10系のMariaDBを確認してみます。レポジトリはenable=1で有効になっていますので、指定なしでyumコマンドを実行します。レポジトリ名が”MariaDB”になりますので、これを含んだパッケージを探してみます。以下のように実行します。

$ yum list MariaDB*

実行結果は以下の通りです。

読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: mirror.dmmlabs.jp
* extras: ftp.iij.ad.jp
* remi-safe: mirrors.thzhost.com
* updates: ftp.iij.ad.jp
インストール済みパッケージ
mariadb-libs.x86_64 1:5.5.56-2.el7 @base
利用可能なパッケージ
MariaDB-aws-key-management.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-backup.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-cassandra-engine.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-client.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-common.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-compat.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-connect-engine.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-cracklib-password-check.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-devel.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-gssapi-server.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-oqgraph-engine.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-rocksdb-engine.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-server.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-shared.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-test.x86_64 10.2.14-1.el7.centos mariadb
MariaDB-tokudb-engine.x86_64 10.2.14-1.el7.centos mariadb
mariadb.x86_64 1:5.5.56-2.el7 base
mariadb-bench.x86_64 1:5.5.56-2.el7 base
mariadb-devel.i686 1:5.5.56-2.el7 base
mariadb-devel.x86_64 1:5.5.56-2.el7 base
mariadb-embedded.i686 1:5.5.56-2.el7 base
mariadb-embedded.x86_64 1:5.5.56-2.el7 base
mariadb-embedded-devel.i686 1:5.5.56-2.el7 base
mariadb-embedded-devel.x86_64 1:5.5.56-2.el7 base
mariadb-libs.i686 1:5.5.56-2.el7 base
mariadb-server.x86_64 1:5.5.56-2.el7 base
mariadb-test.x86_64 1:5.5.56-2.el7 base

MariaDBとして10系のパッケージが表示されたことが確認できました。この中で必要になるものは以下のパッケージになります。

  • MariaDB-server.x86_64 : MariaDB: a very fast and robust SQL database server
  • MariaDB-client.x86_64 : MariaDB: a very fast and robust SQL database server
  • MariaDB-devel.x86_64 : MariaDB: a very fast and robust SQL database server

上記のMariaDBパッケージをインストール対象とします。

3. mariaDBのインストール

本章では実際にMariaDBの10系パッケージをインストールする手順を紹介していきます。特に難しい部分はありませんので、ゆっくりと落ち着いて作業して頂ければ大丈夫です。

3-1. MariaDBパッケージの情報確認

MariaDBに関するパッケージのインストール前に、パッケージの情報を確認しておきます。実行結果は以下の通りです。各パッケージの役割などを確認しておくと、インストールするパッケージの意味合いをイメージしやすいと思います。

$ yum info MariaDB-server MariaDB-client MariaDB-devel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: mirror.dmmlabs.jp
* extras: ftp.iij.ad.jp
* remi-safe: mirrors.mediatemple.net
* updates: ftp.iij.ad.jp
利用可能なパッケージ
名前 : MariaDB-client
アーキテクチャー : x86_64
バージョン : 10.2.14
リリース : 1.el7.centos
容量 : 201 M
リポジトリー : mariadb
要約 : MariaDB: a very fast and robust SQL database server
URL : http://mariadb.org
ライセンス : GPLv2
説明 :
:
: It is GPL v2 licensed, which means you can use the it free of charge under the
: conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
:
: MariaDB documentation can be found at https://mariadb.com/kb
: MariaDB bug reports should be submitted through https://jira.mariadb.org名前 : MariaDB-devel
アーキテクチャー : x86_64
バージョン : 10.2.14
リリース : 1.el7.centos
容量 : 39 M
リポジトリー : mariadb
要約 : MariaDB: a very fast and robust SQL database server
URL : http://mariadb.org
ライセンス : GPLv2
説明 :
:
: It is GPL v2 licensed, which means you can use the it free of charge under the
: conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
:
: MariaDB documentation can be found at https://mariadb.com/kb
: MariaDB bug reports should be submitted through https://jira.mariadb.org

名前 : MariaDB-server
アーキテクチャー : x86_64
バージョン : 10.2.14
リリース : 1.el7.centos
容量 : 465 M
リポジトリー : mariadb
要約 : MariaDB: a very fast and robust SQL database server
URL : http://mariadb.org
ライセンス : GPLv2
説明 :
:
: It is GPL v2 licensed, which means you can use the it free of charge under the
: conditions of the GNU General Public License Version 2 (http://www.gnu.org/licenses/).
:
: MariaDB documentation can be found at https://mariadb.com/kb
: MariaDB bug reports should be submitted through https://jira.mariadb.org

※実際には5.5系のパッケージも表示されますが、ここでは割愛しています。
各パッケージの詳細を確認後、インストールに入ります。

3-2. MariaDBのインストール

MariaDBパッケージはyumコマンドにinstallオプションを付けることでインストールすることができます。項目3-1. で必要なパッケージの情報が確認できましたので、以下のコマンドでインストールします。

# yum -y install MariaDB-devel MariaDB-client MariaDB-server

上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。

読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: mirror.dmmlabs.jp
* extras: ftp.iij.ad.jp
* remi-safe: mirrors.thzhost.com
* updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-client.x86_64 0:10.2.14-1.el7.centos を インストール
--> 依存性の処理をしています: MariaDB-common のパッケージ: MariaDB-client-10.2.14-1.el7.centos.x86_64
---> パッケージ MariaDB-devel.x86_64 0:10.2.14-1.el7.centos を インストール
---> パッケージ MariaDB-server.x86_64 0:10.2.14-1.el7.centos を インストール
---> パッケージ MariaDB-common.x86_64 0:10.2.14-1.el7.centos を インストール【略】

---> パッケージ perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7 を インストール
---> パッケージ perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

インストール中:
MariaDB-client x86_64 10.2.14-1.el7.centos mariadb 48 M
MariaDB-devel x86_64 10.2.14-1.el7.centos mariadb 6.6 M
MariaDB-server x86_64 10.2.14-1.el7.centos mariadb 109 M
依存性関連でのインストールをします:
MariaDB-common x86_64 10.2.14-1.el7.centos mariadb 157 k
MariaDB-compat x86_64 10.2.14-1.el7.centos mariadb 2.8 M
boost-program-options x86_64 1.53.0-27.el7 base 156 k
galera x86_64 25.3.23-1.rhel7.el7.centos mariadb 8.0 M
lsof x86_64 4.87-5.el7 base 331 k
perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k
perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k
perl-DBI x86_64 1.627-4.el7 base 802 k
perl-IO-Compress noarch 2.061-2.el7 base 260 k
perl-Net-Daemon noarch 0.48-5.el7 base 51 k
perl-PlRPC noarch 0.2020-14.el7 base 36 k

トランザクションの要約
インストール 3 パッケージ (+11 個の依存関係のパッケージ)

総ダウンロード容量: 176 M
インストール容量: 759 M
Downloading packages:
警告: /var/cache/yum/x86_64/7/mariadb/packages/MariaDB-10.2.14-centos73-x86_64-common.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID 1bb943db: NOKEY
MariaDB-10.2.14-centos73-x86_64-common.rpm の公開鍵がインストールされていません
(1/14): MariaDB-10.2.14-centos73-x86_64-common.rpm | 157 kB 00:00:01
(2/14): MariaDB-10.2.14-centos73-x86_64-compat.rpm | 2.8 MB 00:00:02

【略】

インストール中 : MariaDB-compat-10.2.14-1.el7.centos.x86_64 1/14
インストール中 : MariaDB-common-10.2.14-1.el7.centos.x86_64 2/14

You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

インストール中 : MariaDB-devel-10.2.14-1.el7.centos.x86_64 14/14
検証中 : MariaDB-common-10.2.14-1.el7.centos.x86_64 1/14
検証中 : perl-Net-Daemon-0.48-5.el7.noarch 2/14
検証中 : MariaDB-client-10.2.14-1.el7.centos.x86_64 3/14

【略】

検証中 : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 12/14
検証中 : perl-PlRPC-0.2020-14.el7.noarch 13/14
検証中 : MariaDB-devel-10.2.14-1.el7.centos.x86_64 14/14

インストール:
MariaDB-client.x86_64 0:10.2.14-1.el7.centos MariaDB-devel.x86_64 0:10.2.14-1.el7.centos
MariaDB-server.x86_64 0:10.2.14-1.el7.centos

依存性関連をインストールしました:
MariaDB-common.x86_64 0:10.2.14-1.el7.centos MariaDB-compat.x86_64 0:10.2.14-1.el7.centos
boost-program-options.x86_64 0:1.53.0-27.el7 galera.x86_64 0:25.3.23-1.rhel7.el7.centos
lsof.x86_64 0:4.87-5.el7 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBI.x86_64 0:1.627-4.el7
perl-IO-Compress.noarch 0:2.061-2.el7 perl-Net-Daemon.noarch 0:0.48-5.el7
perl-PlRPC.noarch 0:0.2020-14.el7

完了しました!

エラーの出力がなく”完了しました!”と表示されれば、MariaDBのインストール完了しています。

3-3. インストールされたMariaDBパッケージの確認

MariaDBパッケージがインストールされたことを確認します。インストールされているパッケージはyumコマンドで確認できます。以下のようにyumに”list installed”オプションを付与して実行することで、インストール済みのMariaDBパッケージが表示されることを確認します。

# yum list installed | grep MariaDB

出力結果としてMariaDBパッケージが表示されることを確認します。

MariaDB-client.x86_64 10.2.14-1.el7.centos @mariadb
MariaDB-common.x86_64 10.2.14-1.el7.centos @mariadb
MariaDB-compat.x86_64 10.2.14-1.el7.centos @mariadb
MariaDB-devel.x86_64 10.2.14-1.el7.centos @mariadb
MariaDB-server.x86_64 10.2.14-1.el7.centos @mariadb

上記のように10.2系のMariaDBパッケージが表示されれば、確認は完了です。
続いてMariaDBのプログラム本体であるmysqldがインストールされた場所を確認します。インストールされた場所(パス)を確認するためにはwhichコマンドを利用します。以下のように実行することでインストールパスを確認できます。

$ which mysqld

実行結果は以下のようになります。

/sbin/mysqld

この結果から、mysqldが/sbin以下にインストールされたことが確認できます。これでMariaDBのインストールが正常に終了したことが確認できました。

3-4. MariaDB起動の確認

ここまででMariaDBのインストールと確認が完了しましたので、続いてインストールしたMariaDBが起動することを確認します。CentOSでは7系からsystemctlコマンドでサービスの起動・停止を行います。MariaDBは以下のように実行することで起動できます。

# systemctl start mariadb

エラーが出力されなければ、MariaDBは正常に起動しています。
systemctlコマンドにstatusオプションを付けて実行することで、起動したサービスの状態について、詳細な情報を取得することができます。以下が実行例です。

# systemctl status mariadb
● mariadb.service - MariaDB 10.2.14 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
mqmigrated-from-my.cnf-settings.conf
Active: active (running) since 水 2018-05-23 11:31:07 JST; 6s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 4211 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 4167 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 4165 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 4179 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
mq4179 /usr/sbin/mysqld

上記では分かり難いかもしれませんが、黒丸(●)の部分が正常な起動状態の場合、緑色で表示されます。また、稼働しているプロセスを表示するpsコマンドでもMariaDBの本体であるmysqldが起動していることを確認できます。
以下のように実行します。

$ ps -aux | grep mysqld
mysql 4649 7.0 8.0 1307416 80600 ? Ssl 17:45 0:00 /usr/sbin/mysqld

以上の結果から、MariaDBが正常に起動することが確認できました。

3-5. MariaDB自動起動の設定

サーバーの再起動や停止の復旧時に、MariaDBが自動的に起動するように設定します。サービスの自動起動を設定するにもsystemctlコマンドを利用します。自動起動は以下のようにsystemctlコマンドを実行します。

# systemctl enable mariadb
Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

エラーが出力されなければ、自動起動の設定は正常に完了しています。
続いて自動起動が設定されたことを確認します。こちらもsystemctlコマンドから確認できます。is-enabledオプションを付与して実行します。

$ systemctl is-enabled mariadb
enabled

enabledと表示されれば自動起動は設定されています。これで自動起動の確認は完了です。

4. mysql_secure_installationの実行

MariaDBでは基本的なセキュリティを確保するためにmysql_secure_installationコマンドが用意されています。このコマンドを実行することで、インストール後のセキュリティホールになりやすい部分(DB管理者のパスワード設定や、サンプルデータベースの削除など)を修正してくれます。できる限りインストール直後に実行することをお勧めします。

4-1. mysql_secure_installationの実行

mysql_secure_installationはオプションを付けずに実行します。

# mysql_secure_installation

実行すると、以下のように設定ウィザードが起動します。設定ウィザードの項目を見ていきます。

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): (設定されていないためenterで次へ)
OK, successfully used password, moving on...

1つ目の設定はデータベースの管理者(root、linuxに設定されているrootとは異なる)にパスワードが設定されている場合はパスワードを入力します。まだパスワードは設定していませんので、enterキーで次へ進めます。

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.Set root password? [Y/n] y (yを入力)
New password: <= DB管理者のパスワードを入力
Re-enter new password: <=パスワードを再度、入力
Password updated successfully!
Reloading privilege tables..
... Success!

ここでDBの管理者パスワードを設定します。設定後、先へ進めます。

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.Remove anonymous users? [Y/n] y (yを入力)
... Success!

DBに最初から作成されている匿名ユーザーを削除するかの質問です。匿名ユーザーが設定されていると、セキュリティホールになりますので、削除します。yを入力して先へ進めます。

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] y (yを入力)
... Success!

リモート環境からDBの管理者ユーザーでログインを無効化するかの質問です。リモートからDBの管理者でログイン出来ることは余り好ましくないため、無効化します。yを入力します。

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y (yを入力)
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

デフォルトで作成されているテスト用のデータベース、”test”を削除するかの確認です。testデータベースはセキュリティホールになりやすいため、削除を行います。yを入力します

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.Reload privilege tables now? [Y/n] y (yを入力)
... Success!

Cleaning up...

test_から始まるデータベースへの接続権限の削除を行うかの確認です。不要な接続権限は削除したほうセキュリティ面では良いので、ここではyを入力して削除を行います。

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.Thanks for using MariaDB!

上記のように”All done!”と表示されれば、mysql_secure_installationによるセキュリティ設定は完了です。

5. MariaDBの基本的な設定変更

項目3. の手順までで、MariaDBパッケージの導入とセキュリティ設定までが完了しました。この状態でも動作しますが、基本的な設定を行うことをお勧めします、本記事では運用するにあたって最低限、必要になる設定を行います。設定の前提は以下の通りです。

  • DB作成時のデフォルトの文字コードとしてUTF-8を設定

この条件に合わせて設定を行います。この設定を行わない場合、作成したデータベースの文字コードがlatin1になってしまい文字化けが発生する可能性があります。本設定を行わないときにデータベースを作成すると文字コードのパラメーターは以下のようになります。

> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

※テスト用のデータベースを作成して、文字コードを確認しました。
上記の結果から、”character_set_database”設定値がlatin1になっていることが確認できます。基本的にはUTF-8を利用することで文字化けなどが発生しにくくなります。
文字コードは以下の手順で設定を行います。

5-1. server.cnfの変更

MariaDBの設定は/etc/my.cnf.d/以下にあるserver.cnfファイルで行います。server.cnfの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

# cp -p /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.org

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

# vi /etc/my.cnf.d/server.cnf

設定ファイルを開いたら、[server]ディレクティブに”character-set-server=utf8”を追加します。追加後の設定ファイルは以下のようになります。

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]
character-set-server=utf8 <=追記

# this is only for the mysqld standalone daemon
[mysqld]

【割愛】

パラメーターの追記が完了したら、設定ファイルを保存します。これでserver.cnfファイルの変更は完了です。

6. server.cnf設定ファイルの反映とMariaDBの確認

ここまででMariaDBの基本的な設定は完了しました。変更した設定を反映するためにMariaDB(mysqld)を再起動します。systemctlを以下のように実行します。

# systemctl restart mariadb

エラーが出力されなければ、MariaDBは正常に再起動しています。
再起動後にMariaDBのstatusを確認します。

# systemctl status mariadb
● mariadb.service - MariaDB 10.2.14 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
mqmigrated-from-my.cnf-settings.conf
Active: active (running) since 水 2018-05-23 11:28:33 JST; 22s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 4140 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 4096 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 4094 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 4108 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
mq4108 /usr/sbin/mysqld

上記の出力結果から、MariaDBは正常に再起動していることが確認できました。

7. 動作確認

項目6. まででMariaDBの設定が完了しましたので、ここからは実際にデータベースの作成と、設定した文字コードを確認していきます。
MariaDBの管理にはphpMyAdminなどのウェブで管理するツールを利用することが多いと思いますが、ここではコンソールからmysqlコマンドを利用して確認を行っていきます。

7-1. テスト用のデータベースの作成

テストとしてデータベースを作成してみます。MariaDBへの接続はmysqlコマンドを利用します。mysqlコマンドを以下のように実行します。

# mysql -uroot -p*******(項目4-1で設定したrootパスワード)

MariaDBに接続すると、以下のように応答があります。

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.2.14-MariaDB MariaDB Server

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

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

MariaDB [(none)]>

”MariaDB [(none)]> ”のようにプロンプトが表示されますので、データベース作成用のSQL文である”create database”を入力します。ここではデータベースとして”test_db”という名前のデータベースを作成します。
※SQL文の最後には実行する意味合いの記号”;(セミコロン)”を付けます。セミコロンが付いていないとSQL文は実行されません。

MariaDB [(none)]> create database test_db;
Query OK, 1 row affected (0.02 sec)

上記のように”Query OK”と表示されれば、データベースは作成されています。

7-2. テスト用のデータベースの確認

次に作成されたデータベースを確認してみます。現在、作成されているデータベースを表示させるSQL文である”show databases”を入力します。

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test_db |
+--------------------+
4 rows in set (0.01 sec)

データベースの一覧に”test_db”が含まれていれば、正常にデータベースは作成されています。作成したデータベース以外のデータベースはデフォルトで作成されるものでMariaDBの管理に利用されます。

7-3. テスト用データベースの文字コード確認

作成したテスト用データベースの文字コードが項目5-1. で設定したUTF-8になっているかを確認します。先ずは作成したテスト用のデータベースに接続します。SQL文の”use”以下のように実行します。

MariaDB [(none)]> use test_db;
Database changed
MariaDB [test_db]>

接続しているデータベースが変更され、プロンプトが”none”から”test_db”に変更されました。
次に接続しているデータベースの文字コード設定を表示させるSQL文を実行します。

MariaDB [test_db]> show variables like "chara%";

実行結果は以下のようになります。

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

上記から、設定前はlatin1だったパラメータがutf8に変わっていることが確認できました。これで文字コードの確認は完了です。

7-4. テスト用データベースの削除

テスト用データベースの文字コード確認まで完了しましたので、テスト用データベースを削除します。データベースを削除するためのSQL文である”drop database”を以下のように実行します。

MariaDB [test_db]> drop database test_db;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

データベースが削除されると、”Query OK”と応答があります。またtest_dbだったプロンプトが再度、noneへ戻ります。これでデータベースは削除されています。確認として”show databases"を実行してデータベースの一覧を表示させます。

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

先ほどの削除した”test_db”が表示されていませんので、削除されたことが確認できました。確認後は”quit”でMariaDBとの接続を解除します。

MariaDB [(none)]> quit
Bye
#

これで通常のシェルに戻ります。MariaDBの動作確認はこれで完了です。

8. まとめ

MariaDBの導入まで完了しました。Linux上でApacheとMariaDB(MySQL)、PHPが動作している環境をLAMPと呼びますが、本記事までで漸くLAMP環境が完成しました。MariaDBのインストールはレポジトリの追加が分かり難い部分だと思いますが、古いバージョンを利用するより、手間でもレポジトリを追加して、最新のバージョンを利用することをお勧めします。
今後は作成したLAMP環境にオープンソースの代表的なCMSである(このブログのCMSでもある)wordpressをインストールしていきます。自身で作成した環境はカスタイマイズも自由にできますので、是非、データベースまでインストールしてLAMP環境を構築してみて下さい。


レムシステムでは、ブログで紹介した設定ができない場合や、利用中のサーバー・ネットワークについての相談を受け付けています。利用中のシステムやセットアップでお困りの点がございましたら、お気軽にご相談ください。

メールでのお問い合わせ

メールフォームからシステムの
知りたいことや問題点をお問い合わせ

メールで問い合わせる

電話でのお問い合わせ

電話でお気軽にお問い合わせください
(受付時間:平日10:00〜18:00)

053-525-7357

  • この記事を書いた人
  • 最新記事
レムシステム

小村定

SIerでIT系インフラの設計と構築を経験したのちに独立、「レムシステム株式会社」を設立する。インフラ系エンジニア歴20年の経験を活かしてITに関わる課題解決や効率化に取り組む日々を送っている。

Copyright© レムシステム エンジニアブログ , 2019 All Rights Reserved.