Linuxサーバー上にMariaDBを作成するにはMariaDBサーバーパッケージをインストールし、サービスを開始してセキュリティを確保した後、データベースと最小限の権限を持つユーザーを作成します。Ubuntu/DebianではAPTを、RHEL/AlmaLinux/RockyではDNF/YUMを使用してください。
mysql_secure_installation を実行し、必要に応じてネットワークを設定し、systemd を有効にして、テスト接続で検証します。 Linux上にMariaDBを作成する ウェブサイト、アプリケーション、または分析用のサーバーを構築する場合、このガイドはクリーンで本番環境に対応した手順を示します。
Ubuntu/DebianおよびRHELベースのシステムへのインストール、初期セキュリティ、作成について説明します。 データベースとユーザーパフォーマンスチューニングの基本、バックアップ、一般的なトラブルシューティングについて、業界のベストプラクティスに沿った初心者向けの分かりやすい手順で解説します。
ホスティングの専門家として、いつそれを使うのが理にかなっているのかもお見せします。 manageプロバイダーから d VPS を取得する YouStable メンテナンス業務を任せて、アプリ開発に集中しましょう。
前提条件とシステム要件
Linuxサーバー上にMariaDBを作成する前に、以下のものが用意されていることを確認してください。
- サポートされているLinuxディストリビューション: Ubuntu 20.04/22.04/24.04、Debian 11/12、AlmaLinux/Rocky Linux 8/9、RHEL 8/9
- root または sudo アクセス
- パッケージインデックスとシステムパッケージを更新しました
- リモートアクセスが必要な場合はポートを開放してください(デフォルトはTCP 3306)。
- ベースラインとなるサーバーサイジング: 1~2 vCPU2~4GB RAM 小規模アプリ向け。高負荷作業向け。
MariaDBのインストールと設定 – ステップバイステップ
システムの更新
# Ubuntu / Debian
sudo apt update && sudo apt -y upgrade
# RHEL / AlmaLinux / Rocky
sudo dnf -y updateUbuntu/DebianにMariaDBをインストールする(APT)
最も手っ取り早い方法は、ディストリビューションのリポジトリを利用することです。新しい機能を利用するには、公式のMariaDBリポジトリを使用してください。まずはOSのリポジトリから始めましょう。
# Install from Ubuntu/Debian repository
sudo apt -y install mariadb-server mariadb-client
# Start and enable
sudo systemctl enable --now mariadb
# Check status
systemctl status mariadb公式MariaDBリポジトリから特定のバージョン(例:LTS)をインストールするには:
# Add the official MariaDB repo (example for Ubuntu 22.04; adjust for your distro)
sudo apt -y install software-properties-common curl gnupg
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
# Install server and client
sudo apt -y install mariadb-server mariadb-client
sudo systemctl enable --now mariadbRHEL/AlmaLinux/RockyにMariaDBをインストールする(DNF/YUM)
安定性を重視するならOSのリポジトリを、より新しいバージョンが必要な場合は公式のMariaDBリポジトリを使用してください。
# OS repository (stable)
sudo dnf -y install mariadb-server
# Start and enable
sudo systemctl enable --now mariadb
# Status
systemctl status mariadbまたは、特定のメジャーバージョンの公式MariaDBリポジトリを追加してください。
# Add official MariaDB repo
sudo dnf -y install curl
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
# Install and start
sudo dnf -y install MariaDB-server MariaDB-client
sudo systemctl enable --now mariadbサーバーを保護する: mysql_secure_installation
インストール後すぐに、組み込みのセキュリティ強化スクリプトを実行してください。このスクリプトは、rootパスワードを設定し、テストデータベースを削除し、適切なデフォルト設定を適用します。
sudo mysql_secure_installation質問に対する推奨回答:
- ルートパスワードを設定します: あり
- 匿名ユーザーを削除する: あり
- ルートリモートログインを禁止する: はい(ただし、厳格で確実な必要性がある場合を除く)
- テストDBを削除します: あり
- 権限テーブルを再読み込みします: あり
データベースと最小権限ユーザーを作成する
MariaDBにログインし、必要最低限の権限を持つアプリケーションデータベースとユーザーを作成してください。
# Log in as root (use sudo if required)
sudo mysql -u root -p
# Inside the MariaDB shell:
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'Strong_Passw0rd!';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;接続をテストする
mysql -u appuser -p -D appdb -e "SELECT VERSION() AS mariadb_version;"リモートアクセスを有効にする(オプション)
アプリケーションサーバーとデータベースサーバーが分離されており、ファイアウォール、強力なパスワード、そして理想的にはプライベートネットワークまたはVPNが利用できる場合にのみ、リモートアクセスを許可してください。手順:
- MariaDBがすべてのインターフェースまたは特定のIPアドレスでリッスンすることを許可する
- アプリサーバーのIPアドレスに紐づいたユーザーを作成します。
- ファイアウォールのポートを安全に開く
# Edit the MariaDB config (path may vary)
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf # Ubuntu/Debian
# or
sudo nano /etc/my.cnf # RHEL-based
# Set
bind-address = 0.0.0.0 # or a specific LAN/VPC IP
# Restart MariaDB
sudo systemctl restart mariadb
# Create a remote user (replace 203.0.113.10 with your app server IP)
sudo mysql -u root -p -e "CREATE USER 'appuser'@'203.0.113.10' IDENTIFIED BY 'Strong_Passw0rd!'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'203.0.113.10'; FLUSH PRIVILEGES;"ファイアウォールを慎重に開けてください。
# UFW (Ubuntu)
sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp
# firewalld (RHEL/Alma/Rocky)
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port protocol="tcp" port="3306" accept' --permanent
sudo firewall-cmd --reload起動時に開始して検証する
sudo systemctl enable mariadb
sudo systemctl status mariadb
ss -tulpn | grep 3306パフォーマンスチューニングの基本(安全なデフォルト設定)
小規模から中規模のワークロードの場合、これらの基本調整によりパフォーマンスと安定性が向上します。 RAM およびワークロード。メインファイルを編集するのではなく、カスタム構成インクルードに記述してください(推奨)。
# Ubuntu/Debian include file
sudo nano /etc/mysql/mariadb.conf.d/60-tuning.cnf
# RHEL-based include file
sudo nano /etc/my.cnf.d/60-tuning.cnf[mysqld]
# Use UTF-8 everywhere
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# InnoDB (transactional engine)
innodb_buffer_pool_size = 1G # ~50–70% of RAM on a dedicated DB server
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
# Connections
max_connections = 200
# Slow query logging
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 1
# Networking
skip_name_resolve = 1# Apply changes
sudo systemctl restart mariadbバックアップと復元(必須)
- 論理バックアップ: 移植性に優れている(mysqldump、mariadb-dumpなど)
- 物理バックアップ/ホットバックアップ: 大規模データセットの場合、より高速なバックアップが可能(Percona XtraBackup、MariaDB Backup)
- 日々のダンプを自動化し、サーバー外(S3/オブジェクトストレージ)に保存する
# Dump a single database
mysqldump -u root -p --routines --events --single-transaction appdb > /backup/appdb_$(date +%F).sql
# Restore
mysql -u root -p appdb < /backup/appdb_YYYY-MM-DD.sql
# Dump all databases
mysqldump -u root -p --all-databases --single-transaction --routines --events > /backup/all_$(date +%F).sql監視とログ
- サービスログ: journalctl -u mariadb
- エラーログ: /var/log/mysql/error.log (Ubuntu/Debian) または /var/log/mysqld.log (RHEL ベース)
- 遅いクエリ: /var/log/mysql/mariadb-slow.log (設定どおり)
- ヘルスチェック: グローバルステータス、情報スキーマテーブルを表示します
# Basic health snapshot
mysql -u root -p -e "SHOW GLOBAL STATUS LIKE 'Threads_connected'; SHOW GLOBAL STATUS LIKE 'Uptime'; SHOW GLOBAL VARIABLES LIKE 'version';"一般的なエラーと修正
- ローカルに接続できません MySQL サーバー(ソケット経由): サービスが実行されていること(systemctl status mariadb)と、クライアントが正しいソケット(/var/run/mysqld/mysqld.sock)を指していることを確認してください。
- ユーザーによるアクセスが拒否されました: ユーザーのホスト部分(例:「appuser」@「localhost」と「appuser」@「%」)を確認し、必要に応じてパスワードをリセットし、権限をフラッシュします。
- ポート3306がリッスンしていません。 bind-addressとファイアウォールを確認し、MariaDBを再起動してss -tulpnで検証してください。
- メモリ不足またはパフォーマンス低下: innodb_buffer_pool_sizeを増やし、スロークエリログを確認し、インデックスを追加してください。
- アップグレードの競合: ディストリビューションから公式リポジトリに切り替える場合は、古いパッケージを完全に削除します(データディレクトリは保持します)。 キャッシュをクリアする次に、希望するバージョンをインストールします。
制作現場からの実践的なヒント
- 絵文字や多言語テキストに関する問題を回避するため、デフォルトでutf8mb4を使用します。
- セキュリティとパフォーマンスを向上させるため、アプリとデータベースは別々のサーバーまたはネットワークに配置してください。
- クラウド環境では、リモートデータベースへのアクセスを固定IPアドレスに制限し、VPNまたはプライベートサブネットを使用してください。
- 定期的に低速クエリのレビューを実施してください。パフォーマンス向上の大部分は、インデックスとクエリの改善によって実現します。
- 毎晩のバックアップを自動化し、毎月復元テストを実施する。
マネージドVPSを使用するタイミング(YouStable)
パッチ、バックアップ、チューニングの管理が大変だと感じるなら、 managed VPSから YouStable お手伝いできます。 セキュアなMariaDB デフォルト設定、継続的な監視、スナップショット、そして24時間7日のサポートを提供します。つまり、お客様はアプリケーションの開発に集中でき、稼働時間、最適化、インシデント対応は弊社にお任せいただけます。ワークロードに合わせてバッファプールとストレージのサイズを事前に設定することも可能ですので、お気軽にお問い合わせください。
よくある質問
1. Ubuntu、Debian、またはRHELにMariaDBをインストールするにはどうすればよいですか?
Ubuntu/Debian の場合: sudo apt install mariadb-server。RHEL/Alma/Rocky の場合: sudo dnf install mariadb-server。新しい機能を使用するには、mariadb_repo_setup スクリプトを使用して公式の MariaDB リポジトリを追加し、systemd を使用してサービスをインストールして有効化してください。
2. MariaDBをインストール後に安全に保護するにはどうすればよいですか?
mysql_secure_installationを実行し、強力なrootパスワードを設定し、匿名ユーザーとテストデータベースを削除し、リモートからのrootログインを禁止し、ファイアウォールを有効にしてください。各アプリケーションには最小権限のデータベースユーザーを使用し、認証情報を定期的に更新してください。
3. MariaDBでデータベースとユーザーを作成するにはどうすればよいですか?
rootユーザーとしてログインし、次のコマンドを実行します。CREATE DATABASE appdb CHARACTER SET utf8mb4; CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'pass'; GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;。名前とパスワードは適宜置き換えてください。
4. 安全にリモートアクセスを有効にするにはどうすればよいですか?
bind-addressを0.0.0.0または特定のプライベートIPアドレスに設定し、固定送信元IPアドレスを持つユーザー(例:「appuser」@「203.0.113.10」)を作成し、ファイアウォールでそのIPアドレスからのポート3306を許可してください。データベースをパブリックインターネットに公開しないよう、プライベートネットワークまたはVPNの使用をお勧めします。
5. MariaDB は、 MySQL?
ほとんどの一般的な LAMP/LEMP ワークロードでは、はい、MariaDB は高い互換性があります。 MySQL クライアントと SQL 構文。高度な機能やエッジケースはバージョンによって異なる場合があります。特に特定のクライアントに依存している場合は、必ずアプリケーションをテストしてください。 MySQL プラグインまたは新しい機能。
これらの手順に従うことで、Linuxサーバー上にMariaDBを確実に作成し、セキュリティを確保し、パフォーマンスを維持できます。拡張する準備ができたとき、またはハンズオフを希望する場合は、 manageメント、 YouStable プロビジョニングと最適化が可能 managed. アプリケーションに合わせてカスタマイズされたMariaDB環境。