◆はじめに
前回の「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について
・概要
phpMyAdminは、Webブラウザを通じてMariaDB/MySQLを管理するための無料のツールです。
コマンドラインでの操作が不要となり、GUIで以下の作業が可能になります。
・主な機能
データベース管理
- データベースの作成・削除・複製
- テーブル構造の確認・編集
- データの検索・更新・削除
ユーザー・権限管理
- データベースユーザーの作成・管理
- 権限設定(ユーザーレベル、データベースレベル)
- パスワード変更
データのインポート・エクスポート
- SQLファイルのインポート
- テーブル・データベースのバックアップエクスポート
- 複数の形式(SQL、CSV、JSON等)に対応
SQLクエリ実行
- SQLコンソールからのダイレクト実行
- クエリ履歴の表示
- 構文エラーの確認
パフォーマンス監視
- サーバーの状態確認
- テーブルの最適化
- インデックス管理
◆phpMyAdmin導入・セットアップ
・必要パッケージのインストール
phpMyAdminおよび関連パッケージのインストール
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: 画像処理ライブラリ(グラフ生成などに使用)
Basic認証用ツールのインストール
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の設定
暗号化キーの生成
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! */
・Nginxの設定
phpMyAdminロケーション設定の追加
サイト設定ファイル(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環境下での設定を明示
・アクセス制限(Basic認証)の設定
パスワードファイルの作成
phpMyAdminへのアクセスユーザーを作成します。
sudo htpasswd -c /etc/nginx/.htpasswd additional_user
New password:
Re-type new password:
Adding password for user additional_user
コマンド説明:
-c: 新規にパスワードファイルを作成(初回のみ使用)additional_user: ユーザー名(任意に変更可)
・.htpasswdファイルの管理
パスワードファイルの権限設定
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
重要なポイント:
複数ユーザーを追加する場合
新しいユーザーを追加する場合は、以下のコマンドを実行します。
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
・PHPセッション設定
PHPセッションディレクトリの権限設定
sudo chown -R nginx:nginx /var/lib/php/session
sudo chmod 755 /var/lib/php/session
・phpMyAdminディレクトリの権限設定
設定ファイルのディレクトリ権限
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: ファイルアップロード領域
・サービスの再起動
Nginx設定の構文確認
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
・ブラウザでのアクセス確認
phpMyAdminへのアクセス
Webブラウザで以下のURLにアクセスします。
https://www.example.com/phpMyAdmin/

Basic認証でのログイン
ブラウザに認証ダイアログが表示されます。
以下の情報でログインします。
認証情報:
- ユーザー名: 前述で設定したユーザー名(例:
additional_user) - パスワード: 設定時に入力したパスワード
phpMyAdminへのログイン
Basic認証後、phpMyAdminのログイン画面が表示されます。
MariaDBのログイン情報:
- ユーザー名: MariaDBの管理者ユーザー(通常:
root) - パスワード: MariaDBのrootパスワード
◆トラブルシューティング
・警告メッセージへの対処
phpMyAdminの初回アクセス時に、いくつかの警告メッセージが表示される場合があります。
警告1:クッキー暗号化キーに関する警告
症状:
クッキーの暗号化のために、構成ファイルに有効なキーが必要です。
原因:
設定ファイルの$cfg['blowfish_secret']が正しく設定されていないか、ファイルのパーミッションが不正な場合。
対処方法:
- 設定ファイルのパーミッション確認:
sudo ls -la /etc/phpMyAdmin/
- Nginxプロセスが読み取り可能なように権限を変更:
sudo chown -R root:nginx /etc/phpMyAdmin
sudo chmod 640 /etc/phpMyAdmin/config.inc.php
$cfg['blowfish_secret']が空でないか確認:
sudo grep "blowfish_secret" /etc/phpMyAdmin/config.inc.php
- Nginxを再起動:
sudo systemctl restart nginx php-fpm
警告2:テンポラリディレクトリアクセス警告
症状:
$cfg['TempDir'] (/var/lib/phpMyAdmin/temp/) にアクセスできません。
原因:
/var/lib/phpMyAdminディレクトリの所有者がapacheまたは他のユーザーになっている場合。
対処方法:
- 現在の所有者確認:
sudo ls -la /var/lib/phpMyAdmin/
- ディレクトリ所有者をnginxに変更:
sudo chown -R nginx:nginx /var/lib/phpMyAdmin/*
- パーミッション確認:
sudo ls -la /var/lib/phpMyAdmin/
- Nginxを再起動:
sudo systemctl restart nginx php-fpm
・phpMyAdminにアクセスできない場合
Basic認証でアクセスを拒否される
原因:
- パスワードファイル(
.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
・PHPエラーが表示される場合
PHPエラーログの確認
sudo tail -f /var/log/php-fpm/www-error.log
よくあるエラーと対処方法
| エラー内容 | 原因 | 対処方法 |
|---|---|---|
| Permission denied | ディレクトリ権限不足 | chown -R nginx:nginx で権限を再設定 |
| Cannot write to … | キャッシュディレクトリ書き込み不可 | /var/lib/phpMyAdmin の権限を確認 |
| Connection refused | MariaDB接続エラー | 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の変更
デフォルトのURLパス(/phpMyAdmin)から別のパスに変更することで、セキュリティを向上させることができます。
sudo mv /usr/share/phpMyAdmin /usr/share/admin_panel
Nginx設定ファイルのlocation /phpMyAdminをlocation /admin_panelに変更して対応します。
・SSLサーバー証明書の検証
phpMyAdminへは必ずHTTPS接続で、有効なSSL証明書を使用してアクセスしてください。
・定期的なバックアップ
データベースを定期的にバックアップします。
phpMyAdminから以下の手順で実行可能です:
- phpMyAdminにログイン
- 対象データベースを選択
- 「エクスポート」タブをクリック
- 「実行」ボタンでSQLファイルをダウンロード
◆まとめ
本記事では、RockyLinux9サーバへのphpMyAdmin導入とセキュアな設定方法について説明しました。
実施内容:
- phpMyAdminおよび関連パッケージのインストール
- ブロウフィッシュ暗号化キーの生成・設定
- NginxのphpMyAdmin設定
- Basic認証によるアクセス制限
- ディレクトリパーミッションの設定
- ブラウザからのアクセス確認
得られるメリット:
- Webブラウザを使用した直感的なデータベース管理
- SQLコマンド実行不要での簡単な操作
- データベースのバックアップ・リストア機能
- リモートからのセキュアなデータベース管理
セキュリティ上の注意:
◆次のステップ
次回は「Nextcloud導入編」として、Webベースのクラウドストレージ「Nextcloud」の導入とセットアップについての手順を実施します。





コメント