Ubuntu 22.04 で MariaDB をデータベースサーバーとして構築する手順です。MariaDB は WordPress などのアプリケーション基盤として使われることが多く、単にインストールするだけでなく、待ち受け範囲、管理ユーザー、アプリ用ユーザー、バックアップを分けて設計する必要があります。
この記事では、MariaDB のインストール、初期確認、bind-address、データベース作成、アプリケーション用ユーザー、バックアップ、ログ確認までを整理します。
MySQL徹底入門 第4版 MySQL 8.0対応
MySQL の仕組み、SQL、運用、管理を確認したい場合の参考書籍です。MariaDB は MySQL 互換系ですが差分もあるため、価格や在庫、MariaDB 固有の仕様はリンク先や公式ドキュメントで確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
関連する記事
MariaDB は Web アプリケーションや CMS の基盤として使われます。WordPress などのアプリケーション構築記事と合わせて読むと、DB 側の責務が分かりやすくなります。
MariaDB の位置づけ
| 要素 | 役割 |
|---|---|
| MariaDB Server | データベース本体。SQL、テーブル、ユーザー、権限を扱う |
| 管理ユーザー | DB 管理やメンテナンスを行うユーザー |
| アプリ用ユーザー | WordPress など特定アプリだけが使うユーザー |
| bind-address | MariaDB が待ち受ける IP アドレス |
| バックアップ | 障害や操作ミスから戻すためのデータ保全 |
MariaDB をインストールする
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server mariadb-clientサービス状態を確認する
systemctl status mariadb --no-pager
ss -ltnp | grep ':3306' || true
sudo mariadb -e 'SELECT VERSION();'Ubuntu の MariaDB は、初期状態ではローカル接続を中心に構成されます。まずはローカルで接続できることを確認します。
初期セキュリティ設定について
対話式の mysql_secure_installation を使う方法もありますが、サーバー構築手順として再現性を重視する場合は、何を変更するのかを理解して個別に確認する方が扱いやすいです。
sudo mysql_secure_installationこのコマンドは対話式です。自動化や構成管理では、root 認証方式、匿名ユーザー、test データベース、リモート root ログインの扱いを個別に管理します。
待ち受け範囲を設定する
アプリケーションと MariaDB が同じサーバーにある場合は、ローカル待ち受けで十分です。別サーバーのアプリケーションから接続する場合だけ、内部 IP で待ち受けます。
sudo tee /etc/mysql/mariadb.conf.d/60-local-bind.cnf <<'EOF'
[mysqld]
bind-address = 127.0.0.1
EOF
sudo systemctl restart mariadb
ss -ltnp | grep ':3306' || trueDB サーバーを別ホストから利用する場合は、bind-address = 10.1.0.50 のように内部 IP を指定し、ファイアウォールでも接続元を制限します。0.0.0.0 で広く待ち受ける構成は、理由がない限り避けます。
データベースとアプリ用ユーザーを作成する
アプリケーションごとに DB とユーザーを分けます。ここでは WordPress 用の例として、特定 DB にだけ権限を持つユーザーを作成します。
sudo mariadb <<'EOF'
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'change-this-password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';
FLUSH PRIVILEGES;
EOFアプリ用ユーザーに全 DB への権限を与えないことが重要です。WordPress 用ユーザーであれば、WordPress 用 DB だけに権限を付与します。
別ホストから接続するユーザー
Web サーバーと DB サーバーを分ける場合、接続元ホストを限定したユーザーを作ります。
sudo mariadb <<'EOF'
CREATE USER 'wordpress'@'10.1.0.%' IDENTIFIED BY 'change-this-password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'10.1.0.%';
FLUSH PRIVILEGES;
EOFネットワーク範囲で許可する場合でも、MariaDB のユーザー許可、OS ファイアウォール、ネットワーク ACL を合わせて制限します。
接続確認を行う
mariadb -u wordpress -p -h 127.0.0.1 wordpress -e 'SHOW TABLES;'
sudo tail -n 50 /var/log/mysql/error.log文字コードを確認する
Web アプリケーションでは utf8mb4 を使うのが基本です。DB 作成時に文字コードと照合順序を明示します。
sudo mariadb -e "SHOW VARIABLES LIKE 'character_set_server';"
sudo mariadb -e "SHOW VARIABLES LIKE 'collation_server';"
sudo mariadb -e "SHOW CREATE DATABASE wordpress\\G"バックアップを取得する
MariaDB は設定したら終わりではなく、バックアップと復元確認が重要です。まずは mariadb-dump で論理バックアップを取得します。
sudo install -d -m 0750 /var/backups/mariadb
sudo mariadb-dump --single-transaction --routines --triggers wordpress \
| sudo tee /var/backups/mariadb/wordpress.sql >/dev/null
sudo ls -lh /var/backups/mariadb/wordpress.sql本番運用では、バックアップを取得するだけでなく、別環境で復元できることを確認します。バックアップファイルには機密情報が含まれるため、保管権限にも注意します。
復元手順を確認する
sudo mariadb <<'EOF'
CREATE DATABASE wordpress_restore CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EOF
sudo mariadb wordpress_restore < /var/backups/mariadb/wordpress.sql
sudo mariadb -e 'SHOW TABLES FROM wordpress_restore;'運用上の注意
- DB 管理ユーザーとアプリ用ユーザーを分ける
- アプリ用ユーザーには対象 DB だけの権限を付与する
- 別ホスト接続では
bind-addressとファイアウォールを合わせて制限する - バックアップは取得だけでなく復元確認まで行う
- WordPress などのアプリケーション設定に DB パスワードを平文保存する場合はファイル権限を確認する
まとめ
Ubuntu 22.04 の MariaDB 構築では、インストール、待ち受け範囲、DB 作成、ユーザー権限、接続確認、バックアップを一連の流れとして扱います。
MariaDB はアプリケーションの裏側にあるため見落とされがちですが、権限を広げすぎたり、バックアップを確認しなかったりすると障害時の影響が大きくなります。アプリケーションごとに DB とユーザーを分け、必要な範囲だけ接続を許可する構成が基本です。



