不能直接启用套件中心的phpMyAdmin,因其已下架多年、存在多个未修复高危CVE、默认无访问控制且绑定不安全路径,极易被爆破;必须手动部署最新版并严格加固配置。
直接说结论:群晖官方套件中心的 phpmyadmin 已停更多年,且默认暴露在 80/443 端口、无登录前验证、使用弱默认配置——不能直接启用,必须手动部署并重配。
为什么不能用套件中心里的 phpMyAdmin
群晖 DSM 7.x 后,套件中心已下架 phpMyAdmin;现存旧版本(如 v4.9.2)存在多个未修复 CVE(如 CVE-2021-41083、CVE-2022-35676),且默认绑定到 http://nas-ip/phpmyadmin,无任何访问控制。实测开启后,只要端口开放,扫描器 3 分钟内就会尝试爆破 root 密码。
常见错误现象包括:mysqli::real_connect(): (HY000/1045): Access denied for user 'root'@'localhost'(因密码不匹配)、Failed to set session cookie(因未启用 HTTPS 或 cookie 设置错误)。
关键原因不是“不会装”,而是“装了就等于把数据库门钥匙挂在门口”。
手动部署最小可行版(DSM 7.2+)
推荐路径:用 Web Station + 手动上传官方最新版(v5.2.1+),禁用所有非必要功能,不依赖 Synology 自带的 MySQL 套件(改用 MariaDB Docker 容器)。
- 下载官方 ZIP 包(
https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip),解压后重命名文件夹为phpmyadmin(全小写,避免大小写敏感问题) - 上传至
/volume1/web/(确保 Web Station 已启用,并设置「PHP 版本」为8.1或8.2,禁用PHP 7.4) - 编辑
/volume1/web/phpmyadmin/config.inc.php,强制关闭危险功能:
/* 关键加固项 */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; // 禁用 config 认证 $cfg['Servers'][$i]['AllowNoPassword'] = false; // 必须输密码 $cfg['ShowChgPassword'] = false; // 隐藏修改密码入口 $cfg['UploadDir'] = ''; // 禁用导入目录 $cfg['SaveDir'] = ''; // 禁用导出目录 $cfg['ExecTimeLimit'] = 60; // 限制执行时长 $cfg['LoginCookieValidity'] = 1800; // Cookie 30 分钟过期
注意:$cfg['Servers'][$i]['host'] 应设为 'mariadb'(Docker 容器名),而非 'localhost' —— 因 Web Station 的 PHP 进程与套件中心 MySQL 不在同一网络命名空间。
反向代理 + 路径级访问控制(最简但有效)
Web Station 默认不支持子路径 Basic Auth,必须用 DSM 内置反向代理 + Nginx 规则实现二次认证。这是最容易被跳过的加固环节。
操作步骤:
- 进入「控制面板 > 登录门户 > 反向代理」,新增规则:
来源 URL:/pma/→ 目标 URL:http://127.0.0.1:8080/phpmyadmin/(假设你用 Web Station 绑定到 8080) - 编辑
/etc/nginx/app.d/server.webstation.conf(需 root 权限),在对应location /pma/块中插入:
auth_basic "Restricted"; auth_basic_user_file /usr/syno/etc/extra_auth/.pma_htpasswd;
然后生成密码文件:sudo htpasswd -c /usr/syno/etc/extra_auth/.pma_htpasswd admin(会提示输入密码)
重启 Nginx:sudo synoservice --restart nginx
此后访问 https://your-nas-domain/pma/ 会先弹出 HTTP Basic Auth,通过后再进 phpMyAdmin 登录页 —— 两层密码,缺一不可。
权限与网络层面收口
即使做了以上所有,若 NAS 外网可直连,仍可能被暴力探测。必须做最后两道硬隔离:
- 防火墙仅放行你常用 IP 段(如
192.168.1.0/24),禁止 WAN 口访问80/443的/pma/路径(DSM 控制面板 > 安全性 > 防火墙 > 编辑规则) - MySQL/MariaDB 用户只授予最小权限:
GRANT SELECT,INSERT,UPDATE,DELETE ON `your_db`.* TO 'pma_user'@'%' IDENTIFIED BY 'strong-pass'; FLUSH PRIVILEGES;,绝不授GRANT ALL或ON *.* - 定期检查日志:
tail -f /var/log/messages | grep -i "phpmyadmin\|pma",发现异常 IP 立即加入黑名单
真正麻烦的不是部署,而是每次 DSM 升级后,Nginx 配置可能被重置、Web Station 的 PHP 版本可能自动切回旧版、反向代理规则偶尔丢失 —— 这些不会报错,但会让整个加固失效。建议把关键配置(config.inc.php、.pma_htpasswd、Nginx 片段)存 Git 私仓,升级前 diff 一次。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











