CentOS7へMariaDBをインストールしよう

 CentOS 7ではレポジトリにMariaDBが標準のDBとして登録されています。"サポートしているのはMySQL"と記すパッケージもありますが、特に問題が起きたとは聞かないので、MariaDBをインストールします。MariaDBのインストール、最新へのアップデート、GUI管理ツールのphpMyAdminを導入します。

MariaDBをインストールしよう

 まず、MariaDBを標準パッケージでインストールします(最新版という場合は、こちらへどうぞ)。

$ sudo yum -y install mariadb-server
ログ略 (保存忘れ...)

MariaDBを起動します。

$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

インストールされたバージョンを確認します。5.5.64でした。

$ mysql --version
mysql Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1

MariaDBのrootパスワードを設定するため、mysql_secure_installationのコマンドを実行します。ここでのrootはMariaDB内のもので、CentOS 7のrootとは異なります。

$ sudo mysql_secure_installation

mysql_secure_installationについては、さくらのページで解説しているので参照ください(手抜きですみません)。

終えたらさっそくmysqlコマンドでrootにログインしてみます。

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2628
Server version: 5.5.64-MariaDB MariaDB Server

MariaDBを最新にアップデートしよう

 現時点での最新stableバージョンは10.4.12(2020-01-28)なので、アップデートしました。

まずはMariaDBパッケージのレポジトリをインストールします。一度目は失敗しました。

$ sudo systemctl stop mariadb
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
$ sudo yum -y update mariadb-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 9.0 kB 00:00:00
* base: ftp.iij.ad.jp
* epel: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* remi-safe: ftp.riken.jp
* updates: ftp.iij.ad.jp
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
remi-safe | 3.0 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/3): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(2/3): remi-safe/primary_db | 1.7 MB 00:00:00
(3/3): epel/x86_64/primary_db | 6.8 MB 00:00:00
No packages marked for update

どうやら、MariaDBのレポジトリインストールに失敗していました。なにも起きてなかったようです。
sudo bash の部分でsudo実行時にパスワード入力有りだと失敗するようです。

suでrootに入りもう一度実行してみました。

$ sudo su
# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo
[info] Adding trusted package signing keys...
[info] Successfully added trusted package signing keys

今度はレポジトリのインストールに成功したようです。"/etc/yum.repos.d/"にmariadb.repoが追加されています。

再度MariaDBのアップデートを実行します。

# yum -y update mariadb-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* remi-safe: ftp.riken.jp
* updates: ftp.iij.ad.jp
mariadb-main | 2.9 kB 00:00:00
mariadb-maxscale | 2.4 kB 00:00:00
mariadb-tools | 2.9 kB 00:00:00
(1/3): mariadb-tools/7/x86_6/primary_db | 13 kB 00:00:01
(2/3): mariadb-maxscale/7/x86_6/primary_db | 6.9 kB 00:00:01
(3/3): mariadb-main/7/x86_6/primary_db | 56 kB 00:00:01
Resolving Dependencies
--> Running transaction check
---> Package MariaDB-server.x86_64 0:10.4.12-1.el7.centos will be obsoleting
--> Processing Dependency: galera-4 for package: MariaDB-server-10.4.12-1.el7.centos.x86_64
--> Processing Dependency: MariaDB-client for package: MariaDB-server-10.4.12-1.el7.centos.x86_64
--> Processing Dependency: MariaDB-common for package: MariaDB-server-10.4.12-1.el7.centos.x86_64
---> Package mariadb-server.x86_64 1:5.5.64-1.el7 will be obsoleted
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.4.12-1.el7.centos will be obsoleting
---> Package MariaDB-common.x86_64 0:10.4.12-1.el7.centos will be installed
--> Processing Dependency: MariaDB-compat for package: MariaDB-common-10.4.12-1.el7.centos.x86_64
---> Package galera-4.x86_64 0:26.4.3-1.rhel7.el7.centos will be installed
--> Processing Dependency: libboost_program_options.so.1.53.0()(64bit) for package: galera-4-26.4.3-1.rhel7.el7.centos.x86_64
---> Package mariadb.x86_64 1:5.5.64-1.el7 will be obsoleted
--> Running transaction check
---> Package MariaDB-compat.x86_64 0:10.4.12-1.el7.centos will be obsoleting
---> Package boost-program-options.x86_64 0:1.53.0-27.el7 will be installed
---> Package mariadb-libs.x86_64 1:5.5.64-1.el7 will be obsoleted
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================
Package Arch Version Repository Size

==================================================================================================Installing:
MariaDB-client x86_64 10.4.12-1.el7.centos mariadb-main 12 M
replacing mariadb.x86_64 1:5.5.64-1.el7
MariaDB-compat x86_64 10.4.12-1.el7.centos mariadb-main 2.8 M
replacing mariadb-libs.x86_64 1:5.5.64-1.el7
MariaDB-server x86_64 10.4.12-1.el7.centos mariadb-main 26 M
replacing mariadb-server.x86_64 1:5.5.64-1.el7
Installing for dependencies:
MariaDB-common x86_64 10.4.12-1.el7.centos mariadb-main 81 k
boost-program-options x86_64 1.53.0-27.el7 base 156 k
galera-4 x86_64 26.4.3-1.rhel7.el7.centos mariadb-main 9.3 M

Transaction Summary
==================================================================================================
Install 3 Packages (+3 Dependent packages)

Total download size: 50 M
Downloading packages:
(1/6): MariaDB-common-10.4.12-1.el7.centos.x86_64.rpm | 81 kB 00:00:01
(2/6): MariaDB-client-10.4.12-1.el7.centos.x86_64.rpm | 12 MB 00:00:04
(3/6): boost-program-options-1.53.0-27.el7.x86_64.rpm | 156 kB 00:00:00
(4/6): MariaDB-compat-10.4.12-1.el7.centos.x86_64.rpm | 2.8 MB 00:00:02
(5/6): galera-4-26.4.3-1.rhel7.el7.centos.x86_64.rpm | 9.3 MB 00:00:03
(6/6): MariaDB-server-10.4.12-1.el7.centos.x86_64.rpm | 26 MB 00:00:06

--------------------------------------------------------------------------------------------------
Total 4.8 MB/s | 50 MB 00:00:10
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : MariaDB-compat-10.4.12-1.el7.centos.x86_64 1/9
Installing : MariaDB-common-10.4.12-1.el7.centos.x86_64 2/9
Installing : MariaDB-client-10.4.12-1.el7.centos.x86_64 3/9
Installing : boost-program-options-1.53.0-27.el7.x86_64 4/9
Installing : galera-4-26.4.3-1.rhel7.el7.centos.x86_64 5/9
Installing : MariaDB-server-10.4.12-1.el7.centos.x86_64 6/9
warning: /etc/my.cnf.d/server.cnf created as /etc/my.cnf.d/server.cnf.rpmnew
Erasing : 1:mariadb-server-5.5.64-1.el7.x86_64 7/9
warning: /var/log/mariadb/mariadb.log saved as /var/log/mariadb/mariadb.log.rpmsave
Erasing : 1:mariadb-5.5.64-1.el7.x86_64 8/9
warning: /etc/my.cnf.d/client.cnf saved as /etc/my.cnf.d/client.cnf.rpmsave
Erasing : 1:mariadb-libs-5.5.64-1.el7.x86_64 9/9
Verifying : MariaDB-server-10.4.12-1.el7.centos.x86_64 1/9
Verifying : MariaDB-client-10.4.12-1.el7.centos.x86_64 2/9
Verifying : galera-4-26.4.3-1.rhel7.el7.centos.x86_64 3/9
Verifying : MariaDB-common-10.4.12-1.el7.centos.x86_64 4/9
Verifying : boost-program-options-1.53.0-27.el7.x86_64 5/9
Verifying : MariaDB-compat-10.4.12-1.el7.centos.x86_64 6/9
Verifying : 1:mariadb-libs-5.5.64-1.el7.x86_64 7/9
Verifying : 1:mariadb-5.5.64-1.el7.x86_64 8/9
Verifying : 1:mariadb-server-5.5.64-1.el7.x86_64 9/9

Installed:
MariaDB-client.x86_64 0:10.4.12-1.el7.centos MariaDB-compat.x86_64 0:10.4.12-1.el7.centos
MariaDB-server.x86_64 0:10.4.12-1.el7.centos

Dependency Installed:
MariaDB-common.x86_64 0:10.4.12-1.el7.centos boost-program-options.x86_64 0:1.53.0-27.el7
galera-4.x86_64 0:26.4.3-1.rhel7.el7.centos

Replaced:
mariadb.x86_64 1:5.5.64-1.el7 mariadb-libs.x86_64 1:5.5.64-1.el7 mariadb-server.x86_64 1:5.5.64-1.el7

Complete!

MariaDBを起動してバージョンを確認します。最新Stableの10.4.12となりました。

$ sudo systemctl start mariadb
$ mysql --version
mysql Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using readline 5.1

MariaDBの文字コードを設定

 DBで使用する文字コードをUTF-8に設定します。設定しないでCREATE DATABASEを実行すると"laten1"となってしまいます。

文字コードの指定は"utf8"でよかったと思うのですが、最近は絵文字などでUnicodeが4byteとなっていることから、文字コードを"utf8mb4"と指定するらしいです。

しかし"utf8mb4"でデータベースを生成し、MovableType 7をインストールしたところ"Specified key was too long;"とエラーで中断していました。create databaseでutf8を明示したところインストールが進みました。

絵文字などの取り扱いがなければ個別にはutf8が無難なようです。

設定ファイルに文字コードを設定し、MariaDBを再起動します。

/etc/my.cnf.d/server.cnf

(途中略)
[mysqld]
character-set-server = utf8mb4

MariaDB 10.4では、クライアントの設定ファイルが変更されていました。

/etc/my.cnf.d/mysql-clients.cnf

(途中略)
[mysql]
default-character-set = utf8mb4

設定を確認します。

$ sudo systemctl restart mariadb
$ mysql -u root -p
MariaDB [(none)]> show variables like "chara%";
+--------------------------+----------------------------+
| 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/mysql/charsets/ |
+--------------------------+----------------------------+

phpMyAdminをインストールしよう

 次に、MySQLのGUI管理ツールであるphpMyAdminをインストールします。

Remiレポジトリより、PHP 7.4用のphpMyAdminをインストールします。

$ sudo yum -y install --enablerepo=remi,remi-php74 phpMyAdmin
(略)
Installed:
phpMyAdmin.noarch 0:5.0.2-2.el7.remi

Webブラウザから、http://ドメイン名/phpMyAdmin/が表示できれば設定完了ですが、初期設定では/phpMyAdmin/にはサーバーローカルからのみアクセス可能な状態となっているので、Webブラウザからは表示できません。

/phpMyAdmin/をWebブラウザからアクセスするために追加された定義ファイル"/etc/httpd/conf.d/phpMyAdmin.conf"を編集し、Apacheを再起動します。

phpMyAdmin本体は、"/usr/share/phpMyAdmin/" へセットアップされています。このディレクトリを外部よりアクセスできるよう、Requireディレクティブの設定値を"local"から"all granted"(全てのアクセスを許可)に変更します。

/etc/httpd/conf.d/phpMyAdmin.conf

(途中略)
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8

#Require local
Require all granted
</Directory>

Apacheを再起動します。

$ sudo systemctl restart httpd

Webブラウザから、http://ドメイン名/phpMyAdmin/をアクセスして次を表示すれば確認完了です。Let's Encrypt導入時にHTTPからHTTPSへのリダイレクトが設定されていれば、https://ドメイン名/phpMyAdmin/ でアクセスされるはずです。

202004_show_phpmyadmin.png

先程変更した、Requireディレクティブの設定値を元の"local"に戻し、httpdを再起動します。

phpMyAdminのアクセスを制限しよう

ベーシック認証および特定リモートホストからのみアクセス可能とするなら、次の<RequireALL>ディレクティブ内のようにアクセスを制限します。ApacheでHTTPも有効とするなら、HTTPSを定義するファイルへ記述を追加し、"/etc/httpd/conf.d/phpMyAdmin.conf" は元の"local"のままにします。

<Directory /usr/share/phpMyAdmin>
AddDefaultCharset UTF-8
AllowOverride All

<RequireALL>
AuthUserFile /usr/home/foo/.htpasswd
AuthName "Please user name."
AuthType Basic
Require valid-user
Require host ホスト名 (ISPの(.)ピリオドを先頭としたホスト名の固定部分)
</RequireALL>
</Directory>

/phpMyAdmin/を他のAliasに変更する例もありますが、アクセスログにはよくある変更パターンが記録されていました。アクセス制限を行うのが無難かと思います。

Require ip とすれば、特定IPアドレスや範囲を指定できますが、動的IPアドレスが配布されるISPではホスト名指定が現実的かと思います。

  1. SSHクライアントを用意しよう
  2. さくらのVPSコントロールパネルからCentOS 7をインストールしよう
  3. CentOS7を初期セットアップしよう
  4. SSHログインで公開鍵認証を使おう
  5. CentOS7へWebサーバー(Apache)をインストールしよう
  6. CentOS7へTLS/SSL(Let's Encrypt)を導入しよう
  7. CentOS7へPHP(7.4)をインストールしよう
  8. CentOS7へMariaDBをインストールしよう
  9. CentOS7へメールサーバー(Postfix/Dovecot)をインストールしよう

前へ

CentOS7へPHP(7.4)をインストールしよう

次へ

CentOS 7へPostfix(VDAパッチ有)をインストール