【2026年5月27日時点の情報です】
このブログはWordPressで動いていて、記事や設定のデータはすべてデータベースに保存されています。そのデータベースとして、自宅サーバーのAlmaLinux 9にMariaDBを入れたときの手順をまとめました。
MariaDBはMySQLと互換性のあるデータベースで、AlmaLinux 9では標準のリポジトリからそのままインストールできます。この記事では、インストールから、日本語や絵文字が文字化けしないようにする文字コードの設定、セキュリティの初期設定、動作確認までを順番に進めます。作業はすべてrootで行っています。
WebサーバーのApacheは、先に「Apache 2(Webサーバー)」の記事で入れています。
MariaDBのインストール
mariadb-server をインストールします。サーバー本体といっしょに、接続用の mysql コマンドなどのクライアントも入ります。
[root@almalinux ~]# dnf -y install mariadb-server ※ mariadb-serverインストール
完了しました!
[root@almalinux ~]# mysql --version ※ インストールされたバージョンを確認入るバージョンは、AlmaLinux 9の標準リポジトリ(AppStream)にあるMariaDBです。細かい番号はインストールした時期によって変わります。
文字コードをutf8mb4にする設定
文字コードは、サーバー側とクライアント側の両方をutf8mb4にします。utf8mb4は1文字を最大4バイトで表せる文字コードで、日本語に加えて絵文字や一部の漢字も正しく保存できます。WordPressもutf8mb4を前提にしているので、最初にそろえておきます。
サーバー側は /etc/my.cnf.d/mariadb-server.cnf の [mysqld] に、クライアント側は /etc/my.cnf.d/client.cnf の [client] に1行ずつ追加します。
[root@almalinux ~]# vi /etc/my.cnf.d/mariadb-server.cnf ※ MariaDBサーバー設定ファイル編集
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
character-set-server = utf8mb4 ← 追加(サーバーの文字コードをutf8mb4にする)
[root@almalinux ~]# vi /etc/my.cnf.d/client.cnf ※ MariaDBクライアント設定ファイル編集
[client]
default-character-set = utf8mb4 ← 追加(クライアントの文字コードをutf8mb4にする)この設定は、このあとのMariaDBの起動で読み込まれます。すでに起動しているときに変えた場合は、systemctl restart mariadb で再起動してください。
起動と自動起動
MariaDBを起動し、サーバーを再起動したときも自動で立ち上がるようにします。enable を実行すると、mysql や mysqld の名前でも操作できるようにリンクが作られます。
[root@almalinux ~]# systemctl start mariadb ※ MariaDB起動
[root@almalinux ~]# systemctl enable mariadb ※ 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.
[root@almalinux ~]# systemctl is-active mariadb ※ 起動しているか確認
activeactive と表示されれば起動しています。起動しないときは、設定ファイルの書き間違いがないか /var/log/mariadb/mariadb.log を確認します。
mysql_secure_installationで初期設定
インストール直後のMariaDBには、テスト用の匿名ユーザーやtestデータベースが残っています。mysql_secure_installation を実行して、これらを片付け、rootのパスワードを設定します。質問はすべて「Y」(空ENTER)で進めました。
| 質問 | 答え | 意味 |
|---|---|---|
| Enter current password for root | 空ENTER | インストール直後はrootにパスワードがない |
| Switch to unix_socket authentication | Y | OSのrootからはパスワードなしでMariaDBのrootに入れる方式にする |
| Change the root password | Y | MariaDBのrootのパスワードを決める |
| Remove anonymous users | Y | 誰でも入れる匿名ユーザーを消す |
| Disallow root login remotely | Y | rootはサーバー自身(localhost)からだけ接続できるようにする |
| Remove test database | Y | 誰でも使えるtestデータベースを消す |
| Reload privilege tables now | Y | ここまでの変更をすぐに反映する |
[root@almalinux ~]# mysql_secure_installation ※ MariaDB初期設定
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
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): ← 空ENTER
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] ← 空ENTER
Enabled successfully!
Reloading privilege tables..
... Success!
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] ← 空ENTER
New password: ← 任意のrootパスワードを入力
Re-enter new password: ← 上と同じパスワードを入力(確認)
Password updated successfully!
Reloading privilege tables..
... Success!
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] ← 空ENTER(匿名ユーザー削除)
... Success!
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] ← 空ENTER(リモートからのrootログイン禁止)
... Success!
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] ← 空ENTER(testデータベース削除)
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] ← 空ENTER
... 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!unix_socket認証を有効にしたので、OSのrootで作業しているときは mysql だけでMariaDBのrootとして入れます。一方で、一般ユーザーから mysql -u root -p で入るときは、ここで決めたパスワードが必要です。
動作確認
MariaDBにログインして、文字コードがutf8mb4になっているかを確認します。
[root@almalinux ~]# mysql -u root -p ※ MariaDBにrootでログイン
Enter password: ← 初期設定で決めたrootパスワードを入力
MariaDB [(none)]> SHOW VARIABLES LIKE 'character_set%'; ※ 文字コードの設定を表示
MariaDB [(none)]> exit ※ ログアウト表示された一覧で、character_set_server、character_set_client、character_set_connection、character_set_database、character_set_results が utf8mb4 になっていればOKです。character_set_system はMariaDB内部で使うもので、utf8mb3 (または utf8)のままで問題ありません。
外部からの接続について
MariaDBには、同じサーバー上のWordPressやphpMyAdminからだけ接続します。ブログはポート開放をしない Cloudflare Tunnel で公開しているので、インターネットからMariaDBのポート(3306)に届くことはありません。
ただし、MariaDBは何も設定しないと、サーバーのすべてのネットワーク(0.0.0.0)で待ち受けます。私のサーバーはファイアウォール(firewalld)を使っていないので、家のLANの機器からは、MariaDBに直接接続を試せる状態でした(2026年10月に見直したときに気づきました)。そこで、サーバー自身(127.0.0.1)からの接続だけを受け付けるようにしました。既存の設定ファイルは書き換えず、設定を1行だけ書いたファイルを追加しています(コマンドはbash、出力は表示例)。
[root@almalinux ~]# ss -ltnp | grep 3306 ※MariaDBが待ち受けているアドレスを確認
LISTEN 0 80 0.0.0.0:3306 0.0.0.0:* users:(("mariadbd",pid=1140,fd=16))
LISTEN 0 80 [::]:3306 [::]:* users:(("mariadbd",pid=1140,fd=17))
[root@almalinux ~]# vi /etc/my.cnf.d/zz-bind-local.cnf ※設定ファイルを追加
[mysqld]
bind-address=127.0.0.1
[root@almalinux ~]# systemctl restart mariadb ※設定を反映
[root@almalinux ~]# ss -ltnp | grep 3306 ※もう一度確認
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mariadbd",pid=1853338,fd=18))127.0.0.1:3306 の1行だけになれば成功です。ファイル名を zz- で始めているのは、ほかの設定ファイルより後に読み込まれて、確実にこの設定が使われるようにするためです。元に戻したいときは、このファイルを消して再起動すれば戻ります。WordPressやphpMyAdminは同じサーバーの中から接続するので、この設定のあともそのまま使えます。
あわせて、どこから接続できるユーザーがいるかも確認しておきます。host が % のユーザーは、どこからでも接続できるユーザーです。私の場合は、以前に練習で作ったアプリのユーザーが残っていたので、使っていないことを確かめてから削除しました(コマンドはbash)。
[root@almalinux ~]# mysql -e "SELECT user, host FROM mysql.user;" ※ユーザーと接続元の一覧
[root@almalinux ~]# mysql -e "DROP USER 'ユーザー名'@'%';" ※使っていないユーザーを削除パソコンのDBツール(HeidiSQL、A5:SQL Mk-2など)からつなぎたい場合も、3306番を開けるのではなく、ツールのSSHトンネルの機能でSSH経由で接続すれば、この設定のままで使えます。
WordPressの設定でも、データベースのホスト名は localhost を使います。WordPress用のデータベースとユーザーは、「WordPressインストール」の記事で作っています。
まとめ
AlmaLinux 9へのMariaDBの導入は、インストール、文字コードの設定、起動、mysql_secure_installationの4つで終わります。文字コードを最初にutf8mb4にそろえておくと、あとから文字化けで悩まずに済みます。
ここまでで、WordPressを動かすためのWebサーバーとデータベースがそろいました。次は「WordPressインストール」です。ブラウザからデータベースを操作したい場合は、「phpMyAdmin インストールと Cloudflare 経由のアクセス制限」もあわせてどうぞ。



コメント