Ubuntu 22.04 で WordPress、PowerDNS、各種 Web アプリケーションを動かす場合、MariaDB の導入だけでなく、待ち受け範囲、アプリ用ユーザー、文字コード、バックアップと復元確認まで決めておく必要があります。
この記事では、MariaDB サーバーの基本構築、ローカル接続を前提にしたアプリ用データベースとユーザーの作成、接続確認、バックアップ/復元確認を扱います。Ubuntu 22.04 の既存環境を保守するための確認記事です。
- MariaDB の導入とサービス確認
- 待ち受け範囲の決め方
- アプリ用データベースとユーザーの作成
- 接続確認と文字コード確認
- バックアップと復元手順の確認
書籍
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
MariaDB の位置づけ
MariaDB は、WordPress や PowerDNS などのアプリケーションが利用するデータベースサーバーです。アプリケーションごとに database と user を分け、必要な権限だけを付与すると、障害時や移行時の切り分けがしやすくなります。
- アプリケーションごとに database を分ける
- アプリケーションごとに user を分ける
- ローカル接続と別ホスト接続を分けて考える
- 文字コードは
utf8mb4を前提にする - バックアップだけでなく復元確認も行う
MariaDB をインストールする
mariadb-server と mariadb-client を導入します。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server mariadb-client
mariadb --versionサービス状態を確認する
MariaDB が起動していること、3306 番ポートの待ち受け、サーバーに接続できることを確認します。
systemctl status mariadb --no-pager
ss -ltnp | grep ':3306' || true
sudo mariadb -e 'SELECT VERSION();'初期セキュリティ設定を確認する
mysql_secure_installation は対話式の初期設定ツールです。既存環境では実行前に、root 認証方式やアプリケーションへの影響を確認します。
sudo mysql_secure_installation自動化や既存環境では、匿名ユーザー、test database、root の remote login などを個別に確認する方が安全な場合があります。
sudo mariadb -e "SELECT User,Host,plugin FROM mysql.user;"
sudo mariadb -e "SHOW DATABASES;"待ち受け範囲を設定する
同一サーバー上のアプリケーションだけが使う場合は、127.0.0.1 に限定します。別ホストから接続させる場合は、bind-address、firewall、ユーザーの Host 条件を合わせて確認します。
sudo tee /etc/mysql/mariadb.conf.d/60-local-bind.cnf >/dev/null <<'EOF'
[mysqld]
bind-address = 127.0.0.1
EOF
sudo systemctl restart mariadb
ss -ltnp | grep ':3306' || trueデータベースとアプリ用ユーザーを作成する
例として WordPress 用の database と user を作成します。パスワードは実際の値に置き換え、構成管理や secret 管理で扱います。
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アプリケーションが同一サーバーから接続するなら 'wordpress'@'localhost' を使います。TCP の 127.0.0.1 と Unix socket の localhost は扱いが異なることがあります。
別ホストから接続するユーザー
別ホストから接続させる場合は、接続元ネットワークを絞ります。MariaDB の待ち受けを広げるだけでなく、firewall と TLS の扱いも合わせて確認します。
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接続確認を行う
アプリ用ユーザーで接続できることを確認します。権限確認では、対象 database だけが見えることも確認します。
mariadb -u wordpress -p -h 127.0.0.1 wordpress -e 'SHOW TABLES;'
mariadb -u wordpress -p -h 127.0.0.1 -e 'SHOW DATABASES;'
sudo tail -n 80 /var/log/mysql/error.log文字コードを確認する
WordPress などでは utf8mb4 を使います。database 作成時の character set と collation を確認します。
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-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復元手順を確認する
本番 database へ戻す前に、別名 database へ復元して手順を確認します。
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;'復元確認用 database は、確認後に削除します。
sudo mariadb -e 'DROP DATABASE wordpress_restore;'運用上の注意
- database と user をアプリケーションごとに分ける
- 待ち受け範囲を必要最小限にする
- 別ホスト接続では firewall と Host 条件を合わせる
- バックアップは復元確認まで行う
- アプリケーション導入前に文字コードと権限を確認する
MariaDB はアプリケーションの状態を持つ中心です。Web サーバーより先に、接続範囲、権限、バックアップ、復元手順を確認しておくと、移行や障害対応がしやすくなります。
まとめ
Ubuntu 22.04 の MariaDB では、インストール後にサービス状態、待ち受け範囲、アプリ用 database/user、文字コード、バックアップ/復元確認を順番に見ます。
WordPress や PowerDNS へ進む前に、データベース側の権限と復旧手順を確かめておくことが大切です。

