phpMyAdmin 与 Adminer:数据库面板
如何在 VDS 上安装数据库的 Web 面板并加以保护,使其不会成为入口:密码访问、地址限制、替代方案。
更新于 2026年8月23日
网页控制面板适合临时修改和查看数据表,但它也是服务器被入侵的最常见原因:/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;
}
}
必需的防护措施
绝不要在没有以下三项的情况下安装面板。
仅允许从您的地址访问:
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;
第三项是仅使用 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 进程池被面板的高负载请求耗尽 |
通过网页面板导入大型数据库的转储文件会超时。真正的备份应通过控制台按计划执行——数据库备份。