Skip to content
VDS · データベース

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パネル経由でダンプするとタイムアウトします。実際のバックアップはコンソールからスケジュールで実行します。データベースのバックアップをご覧ください。