2026.08.14 プライバシーポリシー更新しました

phpMyAdmin導入

スポンサーリンク
RockyLinux
この記事は約15分で読めます。
ランキングに参加しています。応援よろしくお願いします。
ブログランキング・にほんブログ村へ 人気ブログランキングへ FC2ブログランキングへ
スポンサーリンク
この記事が気に入ったら
フォローしよう
最新情報をお届けします。
  1. ◆はじめに
  2. ◆環境情報
  3. ◆phpMyAdminについて
    1. ・概要
    2. ・主な機能
  4. ◆phpMyAdmin導入・セットアップ
    1. ・必要パッケージのインストール
      1. phpMyAdminおよび関連パッケージのインストール
      2. Basic認証用ツールのインストール
      3. 暗号化キー生成ツールのインストール
    2. ・phpMyAdminの設定
      1. 暗号化キーの生成
      2. 設定ファイルのバックアップ
      3. 設定ファイルの編集
    3. ・Nginxの設定
      1. phpMyAdminロケーション設定の追加
    4. ・アクセス制限(Basic認証)の設定
      1. パスワードファイルの作成
    5. ・.htpasswdファイルの管理
      1. パスワードファイルの権限設定
      2. ファイルの構造
      3. 複数ユーザーを追加する場合
      4. パスワード変更
      5. ユーザー削除
      6. パスワードファイルのバックアップ
    6. ・PHPセッション設定
      1. PHPセッションディレクトリの権限設定
    7. ・phpMyAdminディレクトリの権限設定
      1. 設定ファイルのディレクトリ権限
      2. 環境保管領域のディレクトリ権限
    8. ・サービスの再起動
      1. Nginx設定の構文確認
      2. サービスの再起動
    9. ・ブラウザでのアクセス確認
      1. phpMyAdminへのアクセス
      2. Basic認証でのログイン
      3. phpMyAdminへのログイン
  5. ◆トラブルシューティング
    1. ・警告メッセージへの対処
      1. 警告1:クッキー暗号化キーに関する警告
      2. 警告2:テンポラリディレクトリアクセス警告
    2. ・phpMyAdminにアクセスできない場合
      1. Basic認証でアクセスを拒否される
      2. ブラウザキャッシュの問題
    3. ・PHPエラーが表示される場合
      1. PHPエラーログの確認
      2. よくあるエラーと対処方法
  6. ◆セキュリティに関する推奨事項
    1. ・アクセス制限の強化
      1. ファイアウォールでのポート制限
      2. URLの変更
    2. ・SSLサーバー証明書の検証
    3. ・定期的なバックアップ
  7. ◆まとめ
  8. ◆次のステップ
    1. 関連

前回の「Cockpit導入」に続いて、Rocky Linux 9 サーバ構築手順次のステップは、「phpMyAdmin導入編」についてセットアップを行います。

phpMyAdminはWebブラウザを使用してMariaDBやMySQLを管理するためのツールです。
GUIベースで直感的にデータベースの作成・管理・バックアップなどを実施できます。
本記事では、phpMyAdminのインストールからセキュアな設定、Basic認証によるアクセス制限までを解説します。

免責事項:

本記事の内容は筆者の環境で動作確認したものですが、すべての環境での動作を保証するものではありません。本記事の手順を実施する際は、以下の点にご注意ください。

  • 必ず事前にバックアップを取得してください
  • 本番環境での作業前にテスト環境で十分に検証してください
  • 本記事の内容を参考に作業を行った結果生じた損害について、筆者は一切の責任を負いません
  • 各コマンドの実行は自己責任でお願いします

当ブログサイトを運用しているサーバは、「KAGOYA JAPAN」で提供されている「KAGOYA CLOUD VPS」を利用しています。

  • OS: Rocky Linux 9
  • Webサーバ: Nginx
  • データベース: MariaDB
  • PHPバージョン: 8.3以上
  • phpMyAdminバージョン: 5.2以上

phpMyAdminは、Webブラウザを通じてMariaDB/MySQLを管理するための無料のツールです。
コマンドラインでの操作が不要となり、GUIで以下の作業が可能になります。

データベース管理

  • データベースの作成・削除・複製
  • テーブル構造の確認・編集
  • データの検索・更新・削除

ユーザー・権限管理

  • データベースユーザーの作成・管理
  • 権限設定(ユーザーレベル、データベースレベル)
  • パスワード変更

データのインポート・エクスポート

  • SQLファイルのインポート
  • テーブル・データベースのバックアップエクスポート
  • 複数の形式(SQL、CSV、JSON等)に対応

SQLクエリ実行

  • SQLコンソールからのダイレクト実行
  • クエリ履歴の表示
  • 構文エラーの確認

パフォーマンス監視

  • サーバーの状態確認
  • テーブルの最適化
  • インデックス管理

phpMyAdminと依存するPHPライブラリをインストールします。

sudo dnf install -y phpMyAdmin php-mbstring php-zip php-json php-gd

'~ 中略 ~'

Installed:
  php-process-8.3.13-1.el9.remi.x86_64
  phpMyAdmin-5.2.1-1.el9.noarch

Complete!

各パッケージの説明

  • phpMyAdmin: Webブラウザ経由でMariaDB/MySQLを管理するツール
  • php-mbstring: マルチバイト文字列処理ライブラリ(日本語対応)
  • php-zip: ZIPファイル圧縮・解凍機能
  • php-json: JSON形式のデータ処理機能
  • php-gd: 画像処理ライブラリ(グラフ生成などに使用)

phpMyAdminへのアクセスをBasic認証で保護するためのツールをインストールします。

sudo dnf install -y httpd-tools

'~ 中略 ~'

Installed:
  apr-1.7.0-12.el9_3.x86_64
  apr-util-1.6.1-23.el9.x86_64
  apr-util-bdb-1.6.1-23.el9.x86_64
  apr-util-openssl-1.6.1-23.el9.x86_64
  httpd-tools-2.4.57-11.el9_4.1.x86_64

Complete!

パッケージの説明

  • httpd-tools: Apache Webサーバーのユーティリティ。htpasswdコマンドでパスワードファイルを生成可能
sudo dnf install -y pwgen

phpMyAdminはクッキーの暗号化にブロウフィッシュ暗号を使用します。
安全なランダムな暗号化キーを生成します。

pwgen -s 32 -r "'" -n 1

コマンド説明

  • -s: 完全にランダムな文字列を生成
  • -r "'": シングルクォーテーションを除外
  • 32: 32文字の長さで生成
  • -n 1: 1つのパスワードのみ生成

出力例:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

このパスワード文字列を次のステップで使用します。

sudo cp /etc/phpMyAdmin/config.inc.php{,.bak}
sudo vi /etc/phpMyAdmin/config.inc.php

暗号化キーの設定

$cfg['blowfish_secret']のコメント部分を探し、生成したパスワードで置き換えます。

編集前:

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

編集後:

$cfg['blowfish_secret'] = 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

サイト設定ファイル(www.example.com.conf)にphpMyAdmin用のロケーションブロックを追加します。

sudo vi /etc/nginx/conf.d/www.example.com.conf

HTTPS化に伴うphpMyAdmin設定の追加(抜粋)

以下の設定を既存のserverブロック内に追加します。

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name www.example.com;
    include /etc/nginx/ssl.conf;
    
    root /var/www/html/wp;

    '~ 既存の設定 ~'

    # phpMyAdmin設定
    location /phpMyAdmin {
        root /usr/share/;
        index index.php index.html index.thm;

        # phpMyAdminへのアクセス制限(Basic認証)
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.htpasswd;

        # PHP処理
        location ~ ^/phpMyAdmin/(.+\.php)$ {
            try_files $uri =404;
            root /usr/share/;
            fastcgi_pass unix:/run/php-fpm/www.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param HTTPS on;
            include fastcgi_params;
        }

        # 静的ファイル(画像、CSS、JavaScriptなど)
        location ~* ^/phpMyAdmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
            root /usr/share/;
        }
    }
}

設定のポイント

  • location /phpMyAdmin: phpMyAdmin用のロケーション定義
  • auth_basic: Basic認証を有効化
  • auth_basic_user_file: パスワードファイルのパス
  • fastcgi_param HTTPS on: HTTPS環境下での設定を明示

phpMyAdminへのアクセスユーザーを作成します。

sudo htpasswd -c /etc/nginx/.htpasswd additional_user
New password: 
Re-type new password:
Adding password for user additional_user

コマンド説明

  • -c: 新規にパスワードファイルを作成(初回のみ使用)
  • additional_user: ユーザー名(任意に変更可)
sudo chown nginx:nginx /etc/nginx/.htpasswd
sudo chmod 640 /etc/nginx/.htpasswd

権限設定のポイント

  • nginx:nginx: Nginxプロセスが読み取り可能に
  • 640: 所有者は読み取り・書き込み可、グループは読み取り、その他はアクセス不可

htpasswdコマンドで生成されたパスワードファイル(.htpasswd)は、以下の形式で保存されます。

ユーザー名:暗号化されたパスワード

ファイル内容の確認

sudo cat /etc/nginx/.htpasswd
additional_user:$apr1$r41ORjK/$HqJZimcKQFAMYayBlzkrq0
another_user:$apr1$k8w8PDBN/$Hm8fCqyP4nZ9mK3lJ5qQ22

重要なポイント

  • パスワードは$apr1$で始まるAPR1形式で暗号化されている
  • 直接編集(viなどで)してはいけない。必ずhtpasswdコマンドを使用

新しいユーザーを追加する場合は、以下のコマンドを実行します。

sudo htpasswd /etc/nginx/.htpasswd another_user
New password: 
Re-type new password:
Updating password for user another_user

注意

複数ユーザーを追加する場合は、-cオプションを付けずに実行してください。
-cオプションを付けると既存データが上書きされます。

既存ユーザーのパスワードを変更する場合は、以下のコマンドを実行します。

sudo htpasswd /etc/nginx/.htpasswd additional_user
New password: 
Re-type new password:
Updating password for user additional_user

ユーザーを削除する場合は、htpasswdコマンドの-Dオプションを使用します。

sudo htpasswd -D /etc/nginx/.htpasswd additional_user
Deleting password for user additional_user

セキュリティのため、パスワードファイルのバックアップを取得しておくことを推奨します。

sudo cp /etc/nginx/.htpasswd /etc/nginx/.htpasswd.bak
sudo chmod 600 /etc/nginx/.htpasswd.bak
sudo chown -R nginx:nginx /var/lib/php/session
sudo chmod 755 /var/lib/php/session
sudo chown -R root:nginx /etc/phpMyAdmin
sudo chown -R nginx:nginx /var/lib/phpMyAdmin/*

対象ディレクトリ

  • /var/lib/phpMyAdmin/cache: キャッシュ領域
  • /var/lib/phpMyAdmin/config: 設定保存領域
  • /var/lib/phpMyAdmin/save: セッション保存領域
  • /var/lib/phpMyAdmin/temp: テンポラリファイル領域
  • /var/lib/phpMyAdmin/upload: ファイルアップロード領域
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 restart nginx php-fpm

Webブラウザで以下のURLにアクセスします。

https://www.example.com/phpMyAdmin/

ブラウザに認証ダイアログが表示されます。
以下の情報でログインします。

認証情報

  • ユーザー名: 前述で設定したユーザー名(例:additional_user
  • パスワード: 設定時に入力したパスワード

Basic認証後、phpMyAdminのログイン画面が表示されます。

MariaDBのログイン情報

  • ユーザー名: MariaDBの管理者ユーザー(通常:root
  • パスワード: MariaDBのrootパスワード

phpMyAdminの初回アクセス時に、いくつかの警告メッセージが表示される場合があります。

症状

クッキーの暗号化のために、構成ファイルに有効なキーが必要です。

原因

設定ファイルの$cfg['blowfish_secret']が正しく設定されていないか、ファイルのパーミッションが不正な場合。

対処方法

  1. 設定ファイルのパーミッション確認:
sudo ls -la /etc/phpMyAdmin/
  1. Nginxプロセスが読み取り可能なように権限を変更:
sudo chown -R root:nginx /etc/phpMyAdmin
sudo chmod 640 /etc/phpMyAdmin/config.inc.php
  1. $cfg['blowfish_secret']が空でないか確認:
sudo grep "blowfish_secret" /etc/phpMyAdmin/config.inc.php
  1. Nginxを再起動:
sudo systemctl restart nginx php-fpm

症状

$cfg['TempDir'] (/var/lib/phpMyAdmin/temp/) にアクセスできません。

原因

/var/lib/phpMyAdminディレクトリの所有者がapacheまたは他のユーザーになっている場合。

対処方法

  1. 現在の所有者確認:
sudo ls -la /var/lib/phpMyAdmin/
  1. ディレクトリ所有者をnginxに変更:
sudo chown -R nginx:nginx /var/lib/phpMyAdmin/*
  1. パーミッション確認:
sudo ls -la /var/lib/phpMyAdmin/
  1. Nginxを再起動:
sudo systemctl restart nginx php-fpm

原因

  • パスワードファイル(.htpasswd)が存在しない
  • Nginxがパスワードファイルを読み取り可能になっていない

対処方法

# パスワードファイルの存在確認
sudo ls -la /etc/nginx/.htpasswd

# 権限の再設定
sudo chown nginx:nginx /etc/nginx/.htpasswd
sudo chmod 640 /etc/nginx/.htpasswd

# Nginx再起動
sudo systemctl restart nginx

phpMyAdminの設定変更後、警告メッセージが解消されない場合:

# ブラウザキャッシュとCookieをクリア
# ブラウザの開発ツール → Storage または Cookiesセクション

# または、キャッシュフォルダを削除
sudo rm -rf /var/lib/phpMyAdmin/cache/*
sudo systemctl restart nginx php-fpm
sudo tail -f /var/log/php-fpm/www-error.log
エラー内容原因対処方法
Permission deniedディレクトリ権限不足chown -R nginx:nginx で権限を再設定
Cannot write to …キャッシュディレクトリ書き込み不可/var/lib/phpMyAdmin の権限を確認
Connection refusedMariaDB接続エラーMariaDBが起動しているか確認

phpMyAdminへのアクセスは特定のIPアドレスからのみに制限することを推奨します。

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.0.2.100" port protocol="tcp" port="443" accept'
sudo firewall-cmd --reload

デフォルトのURLパス(/phpMyAdmin)から別のパスに変更することで、セキュリティを向上させることができます。

sudo mv /usr/share/phpMyAdmin /usr/share/admin_panel

Nginx設定ファイルのlocation /phpMyAdminlocation /admin_panelに変更して対応します。

phpMyAdminへは必ずHTTPS接続で、有効なSSL証明書を使用してアクセスしてください。

データベースを定期的にバックアップします。
phpMyAdminから以下の手順で実行可能です:

  1. phpMyAdminにログイン
  2. 対象データベースを選択
  3. 「エクスポート」タブをクリック
  4. 「実行」ボタンでSQLファイルをダウンロード

本記事では、RockyLinux9サーバへのphpMyAdmin導入とセキュアな設定方法について説明しました。

Rocky Linux 9 サーバ構築手順一覧

実施内容

  • phpMyAdminおよび関連パッケージのインストール
  • ブロウフィッシュ暗号化キーの生成・設定
  • NginxのphpMyAdmin設定
  • Basic認証によるアクセス制限
  • ディレクトリパーミッションの設定
  • ブラウザからのアクセス確認

得られるメリット

  • Webブラウザを使用した直感的なデータベース管理
  • SQLコマンド実行不要での簡単な操作
  • データベースのバックアップ・リストア機能
  • リモートからのセキュアなデータベース管理

セキュリティ上の注意

  • Basic認証によるアクセス制限を必ず設定してください
  • デフォルトのURLパスから変更することを推奨します
  • HTTPSでの接続を強制してください
  • 定期的なバックアップを実施してください

次回は「Nextcloud導入編」として、Webベースのクラウドストレージ「Nextcloud」の導入とセットアップについての手順を実施します。

コメント

タイトルとURLをコピーしました