phpMyAdminとAdminer:データベースパネル
VDSにデータベース用のWebパネルをインストールする方法と、侵入経路にしないための保護方法を説明します。パスワード認証、アドレス制限、代替手段を扱います。
更新日 2026年8月23日
Webパネルは単発の編集やテーブルの閲覧に便利です。同時に、サーバーが侵害される最も一般的な原因でもあります。/phpmyadmin のURLは自動的にブルートフォース攻撃され、ログインフォームからデータへ直接アクセスできてしまいます。
Adminer:単一ファイル
Adminerは単一のPHPファイルで、MySQL、PostgreSQL、SQLiteに対応しています。インストールするものは何もありません。
mkdir -p /var/www/tools
curl -L -o /var/www/tools/adminer.php \
https://github.com/vrana/adminer/releases/latest/download/adminer.php
chown www-data:www-data /var/www/tools/adminer.php
動作するPHP-FPMが必要です。ファイル名は推測しにくいものに変更しておくのが望ましいです。これは保護ではありませんが、一括スキャンを回避できます。
phpMyAdmin
apt install -y phpmyadmin
このパッケージはApacheに自動的に接続します。Nginxの場合はパスを手動で指定します。
location /db-panel {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
必須の保護
以下の3つを設定せずにパネルをインストールしないでください。
自分のアドレスからのみアクセスを許可します。
location /db-panel {
allow 203.0.113.10;
deny all;
}
Webサーバーレベルでの追加パスワードです。
apt install -y apache2-utils
htpasswd -c /etc/nginx/.htpasswd admin
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
そして3つ目はHTTPSのみでの運用です。Let's Encrypt証明書が必要です。これがないと、データベースのパスワードが平文で送信されます。
最善の選択肢:パネルを外部に公開しない
アドレスが動的な場合は、パネルを一切公開しないでください。SSHトンネルを設定し、デスクトップクライアント(DBeaver、TablePlus、HeidiSQL)で作業します。
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N
詳細はリモートアクセスをご覧ください。この方法なら、外部に公開されるのはSSHのみとなり、パネルはそもそも不要になります。
よくある間違い
| 症状 | 原因 |
|---|---|
ブラウザが adminer.php をダウンロードしてしまう | このパスにPHPが接続されていない |
#1045 Access denied | データベースユーザーが別のホストに紐付けられている |
| 大きなダンプのインポートが中断される | upload_max_filesize と max_execution_time が小さすぎる。コンソールからのインポートが望ましい |
ログに /phpmyadmin へのリクエストが数千件記録される | 定期的なスキャン。パネルは閉じるべき |
| パネルは動作するがサイトが動作しない | 共有のPHP-FPMプールがパネルの重いリクエストで枯渇している |
大規模なデータベースをWebパネル経由でダンプするとタイムアウトします。実際のバックアップはコンソールからスケジュールで実行します。データベースのバックアップをご覧ください。