Skip to content
VDS · 数据库

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.phpPHP 未与该路径关联
#1045 Access denied数据库用户绑定到了其他主机
导入大型转储文件时中断upload_max_filesize 和 max_execution_time 太小;最好从控制台导入
日志中出现成千上万次 /phpmyadmin 请求例行扫描——面板应当关闭
面板正常,但网站无法访问共享的 PHP-FPM 进程池被面板的高负载请求耗尽

通过网页面板导入大型数据库的转储文件会超时。真正的备份应通过控制台按计划执行——数据库备份。