Ubuntu 26.04 で Web アプリケーションを構成する場合、MariaDB は WordPress、Nextcloud、業務アプリケーションなどのデータベースとしてよく使われます。
この記事では、MariaDB を導入し、ローカル接続、文字コード、基本設定、ユーザーとデータベース、バックアップ、ログ確認までをまとめます。外部公開よりも、まずアプリケーションサーバー内または内部ネットワークで安全に使う土台を作る内容です。
- MariaDB の導入とサービス確認
50-server.cnfの基本設定bind-address、socket、文字コード、照合順序- 管理ユーザーとアプリケーションユーザーの分離
- バックアップ、ログ、接続確認
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| DB | MariaDB |
| 主なパッケージ | mariadb-server、python3-pymysql、mariadb-backup |
| 設定ファイル | /etc/mysql/mariadb.conf.d/50-server.cnf |
| サービス | mariadb.service |
MariaDB の構成方針を確認する
MariaDB はデータを保持する中核コンポーネントです。Web サーバーや PHP-FPM とは異なり、不要に外部へ公開せず、アプリケーションから必要な範囲で接続させるのが基本です。
- まず
127.0.0.1または内部ネットワークに限定する - root 相当の管理ユーザーとアプリケーションユーザーを分ける
- 文字コードは
utf8mb4を基本にする - バックアップとリストア確認を運用に含める
- ログとサービス状態を確認できるようにする
パッケージをインストールする
MariaDB 本体、Python から管理する場合に使う PyMySQL、物理バックアップで使う mariadb-backup を導入します。
sudo apt update
sudo apt install -y mariadb-server python3-pymysql mariadb-backup
sudo systemctl enable --now mariadb.service
systemctl status mariadb.service --no-pagerバージョンと接続を確認する
導入後は、サーバーとクライアントのバージョン、ローカル socket 経由の接続、サービス状態を確認します。Ubuntu の MariaDB では、管理者が Unix socket 認証で接続する構成が使われることがあります。
mariadb --version
sudo mariadb -e "SELECT VERSION();"
sudo mariadb -e "SHOW VARIABLES LIKE 'socket';"
systemctl status mariadb.service --no-pager設定ファイルを確認する
MariaDB サーバー側の基本設定は /etc/mysql/mariadb.conf.d/50-server.cnf で確認します。既存設定を編集する前に、対象ファイルと読み込み順を把握します。
ls -l /etc/mysql/
ls -l /etc/mysql/mariadb.conf.d/
sudo sed -n '1,220p' /etc/mysql/mariadb.conf.d/50-server.cnf
sudo mariadb -e "SHOW VARIABLES LIKE 'bind_address';"
sudo mariadb -e "SHOW VARIABLES LIKE 'character_set_server';"
sudo mariadb -e "SHOW VARIABLES LIKE 'collation_server';" 基本設定を入れる
ローカル接続を前提にする場合は、bind-address を 127.0.0.1 にします。文字コードは utf8mb4、照合順序は用途に応じて選びます。ここでは厳密な比較をしやすい utf8mb4_bin の例にします。
sudo tee /etc/mysql/mariadb.conf.d/99-local-basic.cnf >/dev/null <<'EOF'
[mysqld]
bind-address = 127.0.0.1
expire_logs_days = 10
character-set-server = utf8mb4
collation-server = utf8mb4_bin
EOF
sudo mariadb --help --verbose | grep -A 1 "Default options"
sudo systemctl restart mariadb.service
systemctl status mariadb.service --no-pager
sudo mariadb -e "SHOW VARIABLES LIKE 'character_set_server';"
sudo mariadb -e "SHOW VARIABLES LIKE 'collation_server';" 待ち受けアドレスを確認する
外部アプリケーションから接続する必要がない場合、MariaDB はローカル待ち受けに留めます。内部ネットワークへ公開する場合は、ファイアウォール、接続元、ユーザー権限を合わせて設計します。
ss -ltnp | grep 3306
sudo mariadb -e "SHOW VARIABLES LIKE 'bind_address';"
sudo mariadb -e "SHOW VARIABLES LIKE 'port';" データベースとユーザーを作成する
アプリケーションごとにデータベースとユーザーを分けます。ユーザーは必要な DB にだけ権限を付与し、root 相当のユーザーをアプリケーションから使わないようにします。
sudo mariadb <<'SQL'
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'CHANGE_ME_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'appuser'@'localhost';
SQLmariadb -u appuser -p appdb -e "SELECT DATABASE();" バックアップを確認する
MariaDB を運用する前に、論理バックアップとリストア確認の入口を押さえます。小規模な環境では mariadb-dump、より大きな環境では mariadb-backup も検討します。
sudo install -d -o root -g root -m 0750 /var/backups/mariadb
sudo mariadb-dump --single-transaction --routines --events appdb | sudo tee /var/backups/mariadb/appdb.sql >/dev/null
sudo ls -lh /var/backups/mariadb/appdb.sql
mariadb-backup --versionログを確認する
接続できない、起動しない、設定反映後に落ちる、といった問題では、systemd journal と MariaDB のログを確認します。設定ファイルの構文や権限の問題もここに出ます。
systemctl status mariadb.service --no-pager
journalctl -u mariadb.service --no-pager -n 100
sudo ls -l /var/log/mysql/
sudo tail -n 100 /var/log/mysql/error.log公開前の確認ポイント
mariadb.serviceが起動しているbind-addressが意図した範囲になっているcharacter-set-serverがutf8mb4になっている- アプリケーション用 DB とユーザーを分けている
- root 相当のユーザーをアプリケーションから使っていない
- バックアップファイルを作成できる
- ログ確認の場所を把握している
まとめ
Ubuntu 26.04 の MariaDB 基本設定では、mariadb-server を導入し、mariadb.service、50-server.cnf、bind-address、utf8mb4、ユーザー権限、バックアップを順番に確認します。
Web アプリケーション基盤では、MariaDB を不要に外部公開せず、アプリケーションごとに DB とユーザーを分け、バックアップとログ確認まで含めて運用できる状態にしておくことが大切です。

