手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 MariaDB – データベースサーバー構築とアプリ用ユーザー設計

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-addressMariaDB が待ち受ける 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' || true

DB サーバーを別ホストから利用する場合は、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 とユーザーを分け、必要な範囲だけ接続を許可する構成が基本です。

Ubuntu 22.04 MariaDB – データベースサーバー構築とアプリ用ユーザー設計

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る