必须删除setup目录和config.inc.php临时文件,因二者留在Web可访问路径下会允许攻击者重进配置界面、篡改数据库凭据或添加恶意服务器配置;需物理删除setup目录及其中生成的config.inc.php副本,而非仅靠Web服务器deny规则拦截。
必须删掉的 setup 目录和 config.inc.php 临时文件
phpmyadmin 安装后最危险的残留是 /setup 目录和它生成的 config.inc.php —— 这两个东西一旦留在 web 可访问路径下,攻击者能直接重进配置界面、改写数据库连接凭据,甚至添加恶意服务器配置。
-
/setup目录不能只靠 Nginx/Apache 的 location deny 拦截,必须物理删除:运行sudo rm -rf /usr/share/phpmyadmin/setup(或你部署路径下的对应目录) - 如果用过
/setup生成过config.inc.php,确认该文件已复制到主目录(如/usr/share/phpmyadmin/)后,立刻删掉/setup/config/下的原始副本 —— 否则下次有人访问/setup就能重新加载并覆盖你的生产配置 - 别信“我只本地用”,只要 Web 服务开着,
/setup就是公开入口;哪怕绑定了 127.0.0.1,反向代理或 SSRF 也可能绕过
容易被忽略但必须清理的文档与示例文件
phpMyAdmin 源码包自带的 doc/、examples/、ChangeLog、README 等文件不是“摆设”,它们暴露版本号、内部路径、已知漏洞编号,还可能含调试接口(比如 examples/setup.php)。
- 执行
find /usr/share/phpmyadmin -type f \( -name "README*" -o -name "ChangeLog*" -o -name "*.md" -o -name "doc" -o -name "examples" \) -delete(注意路径是否匹配你的实际安装位置) - 特别检查
libraries/vendor/下有没有phpunit或symfony/debug类测试依赖 —— 它们常带未授权执行入口,生产环境完全不需要 - 如果用了宝塔、AMH 等一键脚本,它们常把整个源码包解压进去,
ls -la /usr/share/phpmyadmin/一眼就能看到一堆不该存在的目录
tmp 目录不等于“可留着”,清理策略要分两层
/usr/share/phpmyadmin/tmp 不是缓存目录,是 session、导出 ZIP、失败导入 SQL 的落盘区 —— 它不自动清,也不受 PHP gc 控制,但直接 rm -rf tmp 会引发权限错和 500 错误。
- 先清空内容:
sudo find /usr/share/phpmyadmin/tmp -mindepth 1 -delete(保留目录结构和权限) - 再修复权限:
sudo chown -R www-data:www-data /usr/share/phpmyadmin/tmp(Apache 用www-data,Nginx 常用nginx或www,按实际服务用户调整) - 别设
chmod 777—— phpMyAdmin 写 session 需要的是组可写,不是全世界可写;设错权限会导致后续登录直接报 session_start() failed
Web 服务器配置残留比代码残留更危险
卸载或重装后,/etc/apache2/conf-enabled/phpmyadmin.conf 或 /etc/nginx/sites-enabled/phpmyadmin 经常被遗忘。这些配置不仅让旧路径继续可用,还可能加载错误的 alias、暴露 /phpmyadmin/libraries/ 等敏感子路径。
- 查 Apache:
sudo a2query -c | grep phpmyadmin,然后sudo a2disconf phpmyadmin+sudo systemctl reload apache2 - 查 Nginx:
sudo nginx -t看是否有 include 行指向 phpMyAdmin 配置,手动删掉对应include行或整个文件,再sudo nginx -s reload - 检查 MySQL 用户表里是否还有
phpmyadmin@%—— 用SELECT User,Host FROM mysql.user WHERE User LIKE '%php%';查,有的话立刻DROP USER 'phpmyadmin'@'%'; FLUSH PRIVILEGES;
真正麻烦的从来不是“删哪些文件”,而是删完之后 Web 服务仍能访问旧路径、MySQL 里还挂着高权限账号、tmp 目录权限不对导致后续功能瘫痪——这三个点漏一个,就等于门锁了,钥匙还插在锁孔里。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











