WEB工房しずおかのロゴ

WEB工房しずおか

Ubuntu 24.04×Nginx環境にphpMyAdminを構築!Basic認証で二重保護するWebデータベース管理環境のセットアップ

WEB
Koshio

Ubuntu 24.04 Nginx phpMyAdmin構築

みなさん、こんにちは!WEB工房しずおかの開発チームです。

弊社では、Webアプリケーションの開発だけでなく、本番・検証環境におけるVPSのWebサーバー構築やデータベース運用も自社で積極的に行っています。

前回のSSH初期設定・Webサーバー構築に引き続き、今回はGUIで直感的にデータベースを操作・管理できる phpMyAdmin の構築手順をお届けします!

本記事では、Ubuntu 24.04 LTS + Nginx + MySQL 8.0 の環境において、専用ドメイン(例: admin.example.com)を割り当てて phpMyAdmin をセットアップする方法を解説します。さらに、セキュリティを高めるために Nginx側でのBasic認証(二重ログイン保護) を追加する手順まで余すことなくご紹介します!


1. 構築環境と事前準備

今回のセットアップにおける前提条件および使用ドメインは以下の通りです。

構成要件

  • OS: Ubuntu 24.04 LTS
  • Webサーバー: Nginx
  • データベース: MySQL 8.0(セットアップ済み)
  • PHP: PHP 8.3-FPM
  • 対象ドメイン: admin.example.com(DNSのAレコード設定済み)

2. 作業手順:phpMyAdminのインストールからNginx設定まで

それでは、サーバーにSSH接続した状態から順番に作業を進めていきましょう。

STEP 1:PHP拡張機能とphpMyAdminのインストール

まずは phpMyAdmin の動作に必要な PHP 関連モジュールをインストールします。

$ sudo apt update
$ sudo apt install -y php-fpm php-mysql php-mbstring php-zip php-gd php-json php-curl php-xml

続いて、apt 経由で phpMyAdmin を導入します。

$ sudo apt install -y phpmyadmin

💡 インストール時の注意点(Webサーバー選択)
インストール途中で Web サーバーの選択画面(apache2 / lighttpd)が表示されますが、今回は Nginx を使用するため、何も選択せずに [TAB] キーを押して「了解(Ok)」にフォーカスを合わせてエンター を押して進めてください。
その後の dbconfig-common の設定問合せは「はい」を選択し、phpMyAdmin用のデータベースパスワードを設定します。


STEP 2:Nginx設定ファイルの作成

admin.example.com 用の Server Block(仮想ホスト設定)を作成します。

$ sudo nano /etc/nginx/sites-available/admin.example.com

ファイル内に以下の内容を記述します。

server {
    listen 80;
    server_name admin.example.com;

    root /usr/share/phpmyadmin;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

⚠️ 文法チェックのポイント
fastcgi_pass などのディレクティブ末尾にある セミコロン(;)のつけ忘れ にご注意ください。セミコロンが抜けると、Nginxのテスト実行時に unexpected "}" といった構文エラーが発生します。


STEP 3:設定の有効化とNginxのテスト

作成した設定ファイルのシンボリックリンクを sites-enabled に作成し、Nginx の構文テストを行います。

# シンボリックリンクの作成
$ sudo ln -s /etc/nginx/sites-available/admin.example.com /etc/nginx/sites-enabled/

# 構文チェック
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# 設定の再読み込み
$ sudo systemctl reload nginx

3. セキュリティ強化:NginxでのBasic認証の設定

phpMyAdminのログイン画面が第三者に無制限に露出している状態は、ブルートフォース攻撃(総当たり攻撃)などの標的になりやすく危険です。そこで、Webサーバー(Nginx)側で Basic認証 を設定し、phpMyAdminの画面が開く前に追加の認証を挟む二重保護構造を構築します。

STEP 1:htpasswdツールの準備とユーザー作成

パスワードハッシュファイルを生成するため、apache2-utils をインストールします。

$ sudo apt update
$ sudo apt install -y apache2-utils

次に、管理者用ユーザー(例: pma_admin)を作成してパスワードを設定します。

$ sudo htpasswd -c /etc/nginx/.htpasswd pma_admin
New password: (パスワード入力)
Re-type new password: (パスワード再入力)

STEP 2:Nginx設定にBasic認証を組み込む

先ほど作成した admin.example.com の設定ファイルを開きます。

$ sudo nano /etc/nginx/sites-available/admin.example.com

server ブロック内に auth_basic 設定を追加します。

server {
    listen 80;
    server_name admin.example.com;

    root /usr/share/phpmyadmin;
    index index.php index.html index.htm;

    # --- Basic認証の設定を追加 ---
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
    # ----------------------------

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

STEP 3:設定の反映

設定ファイルを保存したら、構文チェックを行って Nginx を再読み込みします。

$ sudo nginx -t
$ sudo systemctl reload nginx

4. 動作確認とMySQLユーザーの注意点

ブラウザで [http://admin.example.com](http://admin.example.com) にアクセスします。

  1. Basic認証ダイアログの確認
    画面を開く際、まずブラウザ標準のログインダイアログ(ポップアップ)が表示されます。STEP 1 で作成した pma_admin とパスワードを入力して通過します。
  2. phpMyAdmin画面の表示
    Basic認証を通過すると、お馴染みの phpMyAdmin ログイン画面が表示されます。

phpMyAdminログイン画面

MySQL 8.0 におけるログインの落とし穴と対策

MySQL 8.0 では、デフォルトの root ユーザーが auth_socket プラグインで管理されていることが多く、phpMyAdmin の画面から root で直接ログインできない場合があります。

そのため、管理用の専用データベースユーザーを作成してログインすることを強く推奨します。

-- MySQLにログイン
$ sudo mysql

-- 専用の管理ユーザーを作成(パスワードは強力なものに変更してください)
mysql> CREATE USER 'pma_user'@'localhost' IDENTIFIED BY 'Your_Strong_Password_Here';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'pma_user'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

作成した pma_user でログインできれば、すべてのセットアップは完了です!


まとめ:安全なデータベース管理基盤の完成

今回は、Ubuntu 24.04 LTS + Nginx 環境における phpMyAdmin の構築と、Basic認証によるセキュリティ強化手順をご紹介しました。

Webデータベース管理ツールは攻撃の標的になりやすい部分ですが、独自ドメインの設定とNginx側でのアクセス制限(Basic認証やIP制限)を組み合わせることで、安全かつ快適な運用環境を構築できます。

次回は、Certbot を用いた SSL化(HTTPS対応) や、さらなるセキュリティチューニングについてお届けする予定です!

WEB工房しずおかでは、モダンな開発スタックの導入から堅牢なWebサーバーインフラの設計・運用まで一貫してサポートしております。サーバー構築やデータベース移行でお悩みの際は、ぜひお気軽にお問い合わせください!