はじめに
VPSでのWordPress構築を目指して、VirtualBox上のUbuntu Server 24.04で検証を進めています。
これまでの記事で、「Webサーバー(Nginx)」と「プログラム(PHP)」の準備が整いました。今回は、WordPressのデータを保存するための「データベース(MariaDB)」を構築します。
データベースは、外部からの攻撃対象になりやすい部分です。今回は単にインストールするだけでなく、VPSでの外部公開を見据えたセキュリティ設定もしっかり行っていきます。
今回の構成とゴール
今回は、以下の構成で構築を行います。
- データベース: MariaDB Server(Ubuntu標準リポジトリ)
- データベース名:
wp_db(任意に変更可能) - ユーザー名:
wp_user(任意に変更可能)
この記事のゴール:
- MariaDBがインストールされ、正常に稼働している。
- 不要なアクセスを遮断するセキュリティ設定が完了している。
- WordPress用の空のデータベースと、専用ユーザーが作成されている。
MariaDBをインストールする
Ubuntu Server 24.04の標準リポジトリから、安定版のMariaDBをインストールします。
sudo apt update
sudo apt install mariadb-server
インストールが完了したら、サービスが自動的に起動しているか確認します。
systemctl status mariadb
active (running) と表示されていれば、インストールは成功です。
初期セキュリティ設定(mysql_secure_installation)
インストール直後のMariaDBには、テスト用のデータベースや不要なユーザーアカウントが存在します。これらを削除し、基本的なセキュリティを高めるための対話式スクリプトを実行します。
sudo mysql_secure_installation
英語でいくつか質問されますが、基本的には以下のように回答して進めてください。
- Enter current password for root:
- (何も入力せずに Enter キーを押す)
- ※初期状態ではrootパスワードは設定されていないため。
- Switch to unix_socket authentication [Y/n]
- n
- ※Ubuntuのrootユーザーでsudo経由で管理するため、ここでは変更しません。
- Change the root password? [Y/n]
- n
- ※今回はOSの管理者権限(sudo)を使ってログインするため、DBのrootパスワードは設定しません。
- Remove anonymous users? [Y/n]
- Y
- ※誰でもログインできる「匿名ユーザー」を削除します(必須)。
- Disallow root login remotely? [Y/n]
- Y
- ※管理者(root)が外部からログインできないようにします(必須)。
- Remove test database and access to it? [Y/n]
- Y
- ※不要な「test」データベースを削除します。
- Reload privilege tables now? [Y/n]
- Y
- ※設定を即座に反映します。
これで、最低限の初期設定は完了です。
設定ファイルによるセキュリティ強化
VPSとしてインターネットに公開する場合、さらに強固なセキュリティ設定が必要です。設定ファイル編集して、以下の2点を確認・設定します。
- 外部からの接続を完全に遮断する(bind-address)
- ファイル読み込み機能を無効化する(local_infile)
設定ファイルを開きます。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address の確認
ファイル内をスクロールして、bind-address という項目を探してください。
bind-address = 127.0.0.1
これが 127.0.0.1 になっていればOKです。これは「自分自身(localhost)からの接続のみ受け付ける」という意味です。もし 0.0.0.0 になっていたり、コメントアウト(#)されている場合は、必ず 127.0.0.1 に修正してください。
local_infile の無効化
次に、そのすぐ下の行に、以下の1行を追記します。
local_infile = 0
これは、SQLコマンドを使ってサーバー内のファイルを読み込んだりすることを防ぐ設定です。万が一の攻撃対策として有効です。
このように、bind-address のすぐ下に local_infile が並んでいればOKです。
# ...(前略)...
bind-address = 127.0.0.1
local_infile = 0
# ...(後略)...
修正が終わったら、保存(Ctrl+O → Enter)して終了(Ctrl+X)し、設定を反映させます。
sudo systemctl restart mariadb
WordPress用データベースの作成
いよいよ、WordPressが使用するデータベースとユーザーを作成します。
MariaDBにログイン
まずは管理者としてMariaDBにログインします。
sudo mariadb
プロンプトが MariaDB [(none)]> に変わればログイン成功です。
データベースとユーザーの作成コマンド
以下のSQLコマンドを順番に実行してデータベースを作成します。 ※パスワード(password123)の部分は、必ず推測されにくい強力なものに変更してください。
wp_dbは、データベースの名前です。wp_userは、データベースを扱うユーザーの名前です。- 名前は、任意に決められますが、WordPressのインストール時に使用するので、記録しておいてください。
— 1. データベースの作成(文字コードはutf8mb4を指定)
CREATE DATABASE wp_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
— 2. ユーザーの作成(パスワードを設定)
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'password123';
— 3. 作成したユーザーに権限を付与
GRANT ALL PRIVILEGES ON wp_db.* TO 'wp_user'@'localhost';
— 4. 設定の反映
FLUSH PRIVILEGES;
— 5. 終了
EXIT;
【コラム】万が一ログインできなくなったら?
今回のセキュリティ設定を行うと、外部のパソコンからデータベース管理ソフト(phpMyAdminなど)を使って直接アクセスすることはできなくなります。 もし、データベースの中身を確認したり、WordPressのパスワードを強制リセットするなどの緊急対応が必要になった場合は、「DBeaver」や「HeidiSQL」といったPC用ソフトを使用します。これらのソフトの「SSHトンネル」という機能を使えば、セキュリティ設定を維持したまま安全にデータベースを操作可能です。詳しい使い方は、また別の記事で紹介します。
接続テスト
最後に、作成した専用ユーザーでログインできるかテストします。
mariadb -u wp_user -p
パスワードを求められるので、先ほど設定したパスワードを入力します。ログインできれば成功です。確認後、EXIT; で抜けておきましょう。
まとめ
これで、WordPressを動かすための「LEMP環境(Linux, Nginx, MariaDB, PHP)」がすべて揃いました。
- Linux: Ubuntu Server 24.04
- Web Server: Nginx(セキュリティ設定済み)
- Database: MariaDB(外部接続遮断済み)
- PHP: PHP 8.3(連携設定済み)
次回はいよいよ最終段階、WordPress本体のインストールと初期設定を行います。ブラウザにWordPressの画面が表示される瞬間まで、あと少しです!


