手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 MariaDB の基本設定 – utf8mb4 とローカル接続を管理する

関連する記事

Ubuntu 26.04 で Web アプリケーションを構成する場合、MariaDB は WordPress、Nextcloud、業務アプリケーションなどのデータベースとしてよく使われます。

この記事では、MariaDB を導入し、ローカル接続、文字コード、基本設定、ユーザーとデータベース、バックアップ、ログ確認までをまとめます。外部公開よりも、まずアプリケーションサーバー内または内部ネットワークで安全に使う土台を作る内容です。

この記事で扱うこと
  • MariaDB の導入とサービス確認
  • 50-server.cnf の基本設定
  • bind-address、socket、文字コード、照合順序
  • 管理ユーザーとアプリケーションユーザーの分離
  • バックアップ、ログ、接続確認
対象 OSUbuntu 26.04 Server
DBMariaDB
主なパッケージmariadb-serverpython3-pymysqlmariadb-backup
設定ファイル/etc/mysql/mariadb.conf.d/50-server.cnf
サービスmariadb.service
参考書籍
参考書籍
MariaDB and MySQL Common Table Expressions and Window Functions Revealed
MariaDB / MySQL の SQL と運用を深掘りしたい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

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-address127.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';
SQL
コマンド
mariadb -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-serverutf8mb4 になっている
  • アプリケーション用 DB とユーザーを分けている
  • root 相当のユーザーをアプリケーションから使っていない
  • バックアップファイルを作成できる
  • ログ確認の場所を把握している

まとめ

Ubuntu 26.04 の MariaDB 基本設定では、mariadb-server を導入し、mariadb.service50-server.cnfbind-addressutf8mb4、ユーザー権限、バックアップを順番に確認します。

Web アプリケーション基盤では、MariaDB を不要に外部公開せず、アプリケーションごとに DB とユーザーを分け、バックアップとログ確認まで含めて運用できる状態にしておくことが大切です。

関連する記事
Ubuntu 26.04 MariaDB の基本設定 – utf8mb4 とローカル接続を管理する

コメントを残す

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

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

トップへ戻る