CentOS 8にMySQL互換のデータベース MariaDB 10をインストールする

centos8-mariadb-install-top

こんにちは、ITエンジニアの小村(@system_kom)です。

CentOS 8のApache httpd環境にPHPをインストールした前回の記事でウェブアプリケーションサーバーとしての構成が完了しました。

今回は作成した環境にオープンソースのデータベースとして「MariaDB」をインストールする手順を紹介していきます。

参考 CentOS 8にPHPをインストールする手順を紹介した記事

centos-httpd-php73-top
あわせて読みたいCentOS 7にPHP 7.3をインストールしてApache HTTP Serverと連携させる方法

こんにちは、ITエンジニアの小村(@system_kom)です。 以前のブログ記事でCentOS上にSSL対応したApache httpdの環境を作成してPHP7.2をインストールする手順を紹介しました。 2018年5月当時に書かれた、前回 ...

MariaDB(マリアディービー)とは、オープンソースの代表的なデータベースであるMySQLから派生した同じくオープンソースリレーショナルデータベースシステム(RDBMS)です。

ここ最近の主なLinuxディストリビューションでデータベースソフトウェアとして採用されています。

MariaDBはCentOS 7のベースレポジトリでは5.5系の古いバージョンしか用意されていません。MariaDBの現在のメジャーバージョンは10系になります。

CentOS 8ではAppStreamレポジトリから10.3が採用されていますので、本記事ではMariaDBのバージョン10.3をインストールしていきます。

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

それではMariaDBの導入方法を紹介します。

1. MariaDBを導入する環境

MariaDBを導入する環境はCentOS 8にPHPの導入手順を紹介した記事で紹介していますが、確認の意味で再度、纏めておきます。
CentOSを含む基本的な環境は以下の通りです。

CentOS 8 PHPインストール後の環境

  • OSのバージョンはCentOSで最新(2019年11月現在)のバージョン8.0.1905.を利用しています。
  • ウェブサーバーとしてApache2.4.37がインストールされています。
  • Apacheはバーチャルホストの設定が完了して、テストページが表示されています。
  • PHP 7.2系をインストールしており、テストページまで表示されています。
  • サーバーにはグローバルIPアドレスが割り当てられています。
  • ファイアウォールとしてfirewalldを設定しています。

この環境にパッケージでのMariaDBインストールと基本的な設定を進めていきます。

2. MariaDBパッケージの確認

MariaDBのインストールを行う前に、CentOS 8で利用できるMariaDBのパッケージを確認してみます。

利用できるパッケージの確認は"dnf list"コマンドを実行します。パッケージ名が「mariadb」になりますので、この文字列を含んだパッケージを探してみます。以下のように実行します。

 command
$ dnf list maria*
利用可能なパッケージ
mariadb.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-backup.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-common.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-connector-c.i686 3.0.7-1.el8 AppStream
mariadb-connector-c.x86_64 3.0.7-1.el8 AppStream
mariadb-connector-c-config.noarch 3.0.7-1.el8 AppStream
mariadb-connector-c-devel.i686 3.0.7-1.el8 AppStream
mariadb-connector-c-devel.x86_64 3.0.7-1.el8 AppStream
mariadb-connector-odbc.x86_64 3.0.7-1.el8 AppStream
mariadb-devel.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-embedded.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-embedded-devel.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-errmsg.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-gssapi-server.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-java-client.noarch 2.2.5-2.el8 AppStream
mariadb-oqgraph-engine.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-server.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-server-galera.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-server-utils.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
mariadb-test.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream

mariadbの文字列が含まれるパッケージのリストが表示されます。

複数のパッケージが表示されますが、この中でインストールが必要なパッケージは以下の3つになります。

  • mariadb-server.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
  • mariadb.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream
  • mariadb-devel.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream

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

3. mariaDBのインストール

本章では実際にMariaDBの10系パッケージをインストールする手順を紹介していきます。

CentOS 8でのパッケージインストールは"dnf install"コマンドで行います。
パッケージのインストール後に、インストールされたパッケージの確認を行う方法までを説明します。

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

MariaDBパッケージのインストール前に、インストールするパッケージの役割や情報を確認しておきます。

インストールする前には各パッケージの確認をおすすめします。パッケージ情報の確認は"dnf info"コマンドで行います。実行結果は以下の通りです。

 command
$ dnf info mariadb-server mariadb mariadb-devel
利用可能なパッケージ
名前 : mariadb
エポック : 3
バージョン : 10.3.11
リリース : 2.module_el8.0.0+35+6f2527ed
アーキテクチ : x86_64
サイズ : 6.2 M
ソース : mariadb-10.3.11-2.module_el8.0.0+35+6f2527ed.src.rpm
Repo : AppStream
概要 : A very fast and robust SQL database server
URL : http://mariadb.org
ライセンス : GPLv2 with exceptions and LGPLv2 and BSD.
説明 : MariaDB is a community developed branch of MySQL - a multi-user, multi-threaded
: SQL database server. It is a client/server implementation consisting of
: a server daemon (mysqld) and many different client programs and libraries.
: The base package contains the standard MariaDB/MySQL client programs and
: generic MySQL files.
名前 : mariadb-devel
エポック : 3
バージョン : 10.3.11
リリース : 2.module_el8.0.0+35+6f2527ed
アーキテクチ : x86_64
サイズ : 1.0 M
ソース : mariadb-10.3.11-2.module_el8.0.0+35+6f2527ed.src.rpm
Repo : AppStream
概要 : Files for development of MariaDB/MySQL applications
URL : http://mariadb.org
ライセンス : GPLv2 with exceptions and LGPLv2 and BSD.
説明 : MariaDB is a multi-user, multi-threaded SQL database server.
: MariaDB is a community developed branch of MySQL.
:
:
:
:
: This package contains everything needed for developing MariaDB/MySQL server
: applications. For developing client applications, use mariadb-connector-c
: package.
名前 : mariadb-server
エポック : 3
バージョン : 10.3.11
リリース : 2.module_el8.0.0+35+6f2527ed
アーキテクチ : x86_64
サイズ : 16 M
ソース : mariadb-10.3.11-2.module_el8.0.0+35+6f2527ed.src.rpm
Repo : AppStream
概要 : The MariaDB server and related files
URL : http://mariadb.org
ライセンス : GPLv2 with exceptions and LGPLv2 and BSD.
説明 : MariaDB is a multi-user, multi-threaded SQL database server. It is a
: client/server implementation consisting of a server daemon (mysqld)
: and many different client programs and libraries. This package contains
: the MariaDB server and some accompanying files and directories.
: MariaDB is a community developed branch of MySQL.

各パッケージの役割やサイズ、バージョンなどの詳細を確認後、インストールに入ります。

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

パッケージは"dnf install"コマンドでインストールすることができます。
「項目3-1.」で必要なパッケージが確認できましたので、以下のように"dnf install"コマンドを実行してパッケージをインストールします。

 command
# dnf install -y mariadb-server mariadb mariadb-devel

上記では"dnf install"コマンドに"-y"オプションを付けることでインストール時の確認応答を省いています。

パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。
コマンドを実行すると、以下のようにインストールが開始されます。

 log
determining the fastest mirror (9 hosts).. done.==================] 1.4 kB/s | 706 B 00:00 ETA
CentOS-8 - AppStream 1.7 kB/s | 4.3 kB 00:02
CentOS-8 - Base 6.1 kB/s | 3.9 kB 00:00
CentOS-8 - Extras 2.7 kB/s | 1.5 kB 00:00
依存関係が解決しました。
====================================================================================================
パッケージ アーキテクチャー
バージョン リポジトリ サイズ
====================================================================================================
Installing:
mariadb x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 6.2 M
mariadb-devel x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 1.0 M
mariadb-server x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 16 M
依存関係をインストール中:
mariadb-common x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 62 k
mariadb-connector-c x86_64 3.0.7-1.el8 AppStream 148 k
mariadb-connector-c-config noarch 3.0.7-1.el8 AppStream 13 k
mariadb-connector-c-devel x86_64 3.0.7-1.el8 AppStream 63 k
mariadb-errmsg x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 232 k
perl-DBD-MySQL x86_64 4.046-2.module_el8.0.0+72+668237d8 AppStream 156 k
perl-DBI x86_64 1.641-2.module_el8.0.0+66+fe1eca09 AppStream 740 k
keyutils-libs-devel x86_64 1.5.10-6.el8 BaseOS 48 k
krb5-devel x86_64 1.16.1-22.el8 BaseOS 546 k
libcom_err-devel x86_64 1.44.3-2.el8 BaseOS 37 k
libkadm5 x86_64 1.16.1-22.el8 BaseOS 184 k
libselinux-devel x86_64 2.8-6.el8 BaseOS 199 k
libsepol-devel x86_64 2.8-2.el8 BaseOS 85 k
libverto-devel x86_64 0.3.0-5.el8 BaseOS 18 k
openssl-devel x86_64 1:1.1.1-8.el8 BaseOS 2.3 M
pcre2-devel x86_64 10.32-1.el8 BaseOS 605 k
pcre2-utf16 x86_64 10.32-1.el8 BaseOS 228 k
pcre2-utf32 x86_64 10.32-1.el8 BaseOS 220 k
perl-Math-BigInt noarch 1:1.9998.11-5.el8 BaseOS 195 k
perl-Math-Complex noarch 1.59-416.el8 BaseOS 108 k
psmisc x86_64 23.1-3.el8 BaseOS 151 k
zlib-devel x86_64 1.2.11-10.el8 BaseOS 56 k
弱い依存関係をインストール中:
mariadb-backup x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 6.2 M
mariadb-gssapi-server x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 49 k
mariadb-server-utils x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed AppStream 1.6 M
Enabling module streams:
mariadb 10.3
perl-DBD-MySQL 4.046
perl-DBI 1.641
トランザクションの概要
====================================================================================================
インストール 28 パッケージ
ダウンロードサイズの合計: 38 M
インストール済みのサイズ: 178 M
パッケージのダウンロード中です:
CentOS-8 - Base 195% [==========================================================-] 1.3done. | 1.3 kB --:-- ETA
(1/28): mariadb-common-10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64. 381 kB/s | 62 kB 00:00
(2/28): mariadb-connector-c-3.0.7-1.el8.x86_64.rpm 669 kB/s | 148 kB 00:00
(3/28): mariadb-connector-c-config-3.0.7-1.el8.noarch.rpm 215 kB/s | 13 kB 00:00
(4/28): mariadb-connector-c-devel-3.0.7-1.el8.x86_64.rpm 514 kB/s | 63 kB 00:00
(5/28): mariadb-10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64.rpm 6.7 MB/s | 6.2 MB 00:00
(6/28): mariadb-devel-10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64.r 1.7 MB/s | 1.0 MB 00:00
(7/28): mariadb-backup-10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64. 5.1 MB/s | 6.2 MB 00:01
(8/28): mariadb-errmsg-10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64. 763 kB/s | 232 kB 00:00
(9/28): mariadb-gssapi-server-10.3.11-2.module_el8.0.0+35+6f2527ed. 392 kB/s | 49 kB 00:00
【略】
(27/28): zlib-devel-1.2.11-10.el8.x86_64.rpm 247 kB/s | 56 kB 00:00
(28/28): psmisc-23.1-3.el8.x86_64.rpm 432 kB/s | 151 kB 00:00
----------------------------------------------------------------------------------------------------
合計 7.6 MB/s | 38 MB 00:04
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
scriptletの実行中: mariadb-connector-c-3.0.7-1.el8.x86_64 1/1
準備 : 1/1
Installing : mariadb-connector-c-config-3.0.7-1.el8.noarch 1/28
Installing : mariadb-common-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 2/28
Installing : mariadb-connector-c-3.0.7-1.el8.x86_64 3/28
Installing : mariadb-errmsg-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 4/28
Installing : zlib-devel-1.2.11-10.el8.x86_64 5/28
Installing : psmisc-23.1-3.el8.x86_64 6/28
Installing : perl-Math-Complex-1.59-416.el8.noarch 7/28
Installing : perl-Math-BigInt-1:1.9998.11-5.el8.noarch 8/28
Installing : perl-DBI-1.641-2.module_el8.0.0+66+fe1eca09.x86_64 9/28
Installing : perl-DBD-MySQL-4.046-2.module_el8.0.0+72+668237d8.x86_64 10/28
Installing : mariadb-backup-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 11/28
Installing : mariadb-gssapi-server-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 12/28
Installing : mariadb-server-utils-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 13/28
scriptletの実行中: mariadb-server-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 14/28
Installing : mariadb-server-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 14/28
scriptletの実行中: mariadb-server-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 14/28
Installing : mariadb-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 15/28
Installing : pcre2-utf32-10.32-1.el8.x86_64 16/28
Installing : pcre2-utf16-10.32-1.el8.x86_64 17/28
Installing : pcre2-devel-10.32-1.el8.x86_64 18/28
Installing : libverto-devel-0.3.0-5.el8.x86_64 19/28
Installing : libsepol-devel-2.8-2.el8.x86_64 20/28
Installing : libselinux-devel-2.8-6.el8.x86_64 21/28
Installing : libkadm5-1.16.1-22.el8.x86_64 22/28
Installing : libcom_err-devel-1.44.3-2.el8.x86_64 23/28
Installing : keyutils-libs-devel-1.5.10-6.el8.x86_64 24/28
Installing : krb5-devel-1.16.1-22.el8.x86_64 25/28
Installing : openssl-devel-1:1.1.1-8.el8.x86_64 26/28
Installing : mariadb-connector-c-devel-3.0.7-1.el8.x86_64 27/28
Installing : mariadb-devel-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 28/28
scriptletの実行中: mariadb-devel-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64 28/28
インストール済み:
mariadb-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
mariadb-devel-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
mariadb-server-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
mariadb-backup-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
mariadb-gssapi-server-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
mariadb-server-utils-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
mariadb-common-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
mariadb-connector-c-3.0.7-1.el8.x86_64
mariadb-connector-c-config-3.0.7-1.el8.noarch
mariadb-connector-c-devel-3.0.7-1.el8.x86_64
mariadb-errmsg-3:10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
【略】
psmisc-23.1-3.el8.x86_64
zlib-devel-1.2.11-10.el8.x86_64
完了しました!

出力された結果にエラーがなく、最後に「完了しました!」と表示されれば、MariaDBパッケージのインストールは完了しています。

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

MariaDBパッケージがシステムにインストールされたことを確認します。

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

 command
$ dnf list installed | grep mariadb
mariadb.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-backup.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-common.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-connector-c.x86_64 3.0.7-1.el8 @AppStream
mariadb-connector-c-config.noarch 3.0.7-1.el8 @AppStream
mariadb-connector-c-devel.x86_64 3.0.7-1.el8 @AppStream
mariadb-devel.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-errmsg.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-gssapi-server.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-server.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream
mariadb-server-utils.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed @AppStream

上記のようにMariaDBパッケージが表示されれば、インストールされたパッケージの確認は完了です。

3-4. MariaDB起動の確認

ここまでの手順でMariaDBパッケージのインストールと確認が完了しましたので、次にインストールしたMariaDBが起動することを確認します。

CentOSでは7系から"systemctl"コマンドでサービスの起動と停止を行います。MariaDBは以下のように実行することで起動できます。

 command
# systemctl start mariadb

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

 command
$ systemctl status mariadb
 mariadb.service - MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-11-07 11:53:18 JST; 1min 31s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 6468 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 6334 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, sta>
Process: 6310 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 6436 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 11374)
Memory: 86.8M
CGroup: /system.slice/mariadb.service
mq6436 /usr/libexec/mysqld --basedir=/usr

上記では分かり難いかもしれませんが、丸()部分が正常な起動状態の場合、緑色で表示されます。

また、稼働しているプロセスを表示する"ps"コマンドでもMariaDBの本体である「mysqld」が起動していることを確認できます。
psコマンドにシステム上で稼働しているプロセスを全て表示するオプション"-aux"を付けて以下のように実行します。

 command
$ ps -aux | grep mysqld
mysql 6436 0.2 4.9 1300752 91468 ? Ssl 11:53 0:00 /usr/libexec/mysqld --basedir=/usr

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

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

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

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

コマンドを実行して「Created symlink...」メッセージが表示されれば、cockpit.socketの自動起動は設定が完了しています。

念のために自動起動が設定されたことを確認します。確認は"systemctl is-enabled"コマンドで行います。
以下のように実行します。

 command
$ systemctl is-enabled mariadb
enabled

「enabled」と表示されれば「mariadb」自動起動の確認は完了です。

4. mysql_secure_installationの実行

MariaDBでは基本的なセキュリティを確保するために"mysql_secure_installation"コマンドが用意されています。

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

4-1. mysql_secure_installationの実行

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

 command
# mysql_secure_installation

実行すると、以下のように設定ウィザードが起動します。設定ウィザードの項目を見ていきます。
1つ目の設定はデータベースの管理者にパスワードが設定されている場合はパスワードを入力します。
まだパスワードは設定していませんので、enterキーで次へ進めます。

MariaDBにもrootというデータベース管理ユーザーが存在します。linuxシステムに設定されているrootとは異なりますので、混同しないように気を付けて下さい。

 log
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...

次にDBの管理者パスワードを設定するかの確認になります。DB管理者パスワードはセキュリティ面から設定を行うことをおすすめします。本記事では"y"を選択して設定を行います。

 log
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!

MariaDBにデフォルトで作成されている「匿名ユーザー」を削除するかの質問です。
匿名ユーザーが設定されていると、セキュリティホールになりますので、削除します。"y"を入力して先へ進めます。

 log
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
... Success!

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

 log
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
... Success!

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

 log
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
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

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

 log
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
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

設定した接続権限を直ぐに反映するかの確認です"y"を入力して設定の反映を行います。

 log
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
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の基本的な設定変更

ここまでの手順でMariaDBパッケージのインストールと基本的なセキュリティ設定までが完了しました。

この状態でもMariaDBは動作しますが、追加の設定を行うことをお勧めします、本記事ではデータベースサーバーを運用するにあたって「DB作成時デフォルトの文字コードとしてutf8mb4が利用」されるように設定を行います。

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

 command
> 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/mariadb/charsets/ |
+--------------------------+------------------------------+

※テスト用のデータベースを作成して、文字コードを確認しました。
上記の結果から「character_set_database」設定値が「latin1」になっていることが確認できます。

最近のシステムでは文字コードとして「UTF-8」が採用されている場合が多いため、データベースの文字コードも「utf8mb4」を利用することで文字化けが発生しにくくなります。
データベース作成時の文字コードは以下の手順で設定を行います。

5-1. server.cnfの変更

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

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

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

 command
# vi /etc/my.cnf.d/mariadb-server.cnf

設定ファイルを開いたら、[mariadb]ディレクティブに"character-set-server=utf8mb4"パラメータを追加します。
あわせて[client-mariadb]ディレクティブを追加して設定項目として同じく"default-character-set = utf8mb4"パラメーターを追加します。
追加後の設定ファイルは以下のようになります。

 code
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
character-set-server = utf8mb4
[client-mariadb]
default-character-set = utf8mb4

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

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

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

 command
# systemctl restart mariadb

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

 command
$ systemctl status mariadb
 mariadb.service - MariaDB 10.3 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-11-07 12:08:14 JST; 18s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 6745 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 6675 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, sta>
Process: 6651 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 6713 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 11374)
Memory: 72.4M
CGroup: /system.slice/mariadb.service
mq6713 /usr/libexec/mysqld --basedir=/usr

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

7. 動作確認

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

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

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

 command
$ mysql -uroot -p*******(項目4-1.で設定したMariaDB側のrootパスワード)

MariaDBに接続できると、以下のようにデータベースから応答があります。

 command
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.11-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文は実行されません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 command
MariaDB [(none)]> quit
Bye
$

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

8. まとめ

本記事までの内容でデータベース「MariaDB」のインストールと設定まで完了しました。Linux上でApacheとMariaDB(MySQL)、PHPが動作している環境をLAMPと呼びますが、これで基本的なLAMP環境が完成しました。

今後は作成したLAMP環境にオープンソースの代表的なCMSである(このブログのCMSでもある)WordPressをインストールしていきます。
自身で作成した環境はカスタイマイズも自由にできますので、是非、データベースまでインストールしてLAMP環境を構築してみて下さい。

  • この記事を書いた人
rem-profile-photo

レムシステム

レムシステムはPC・サーバー・ネットワークでの業務効率化を主な業務としている会社です。全国に対応しています。

-CentOS, オープンソース
-