最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
phpMyAdmin如何防止普通用户删除数据库
时间:2026-09-01 13:29:47 编辑:袖梨 来源:一聚教程网
普通用户能删库是因为phpMyAdmin默认允许有DROP权限的用户执行DROP DATABASE且界面不校验权限粒度;需同时设置$cfg['AllowUserDropDatabase'] = false并收回MySQL层DROP权限,再禁用$cfg['IgnoreMultiSubmitErrors']以实现双保险。
为什么普通用户能删库?默认配置没关掉这个开关
phpMyAdmin 默认允许有 DROP 权限的用户执行 DROP DATABASE,但界面层不校验权限粒度——只要 MySQL 账号本身有 DROP 权限,phpMyAdmin 就会显示「删除数据库」按钮。很多人以为只在 phpMyAdmin 里不给权限就安全了,其实不是:MySQL 层的权限才是决定性因素。
$cfg['AllowUserDropDatabase'] = false 是最直接的开关
这个配置项控制 phpMyAdmin 是否渲染删除数据库按钮。设为 false 后,即使用户账号有 DROP 权限,界面上也根本看不到「删除」链接或弹窗提示。
- 修改位置:在
config.inc.php(不是config.default.php)中添加或修改这一行 - 必须写在
$cfg['Servers'][$i]配置块**之外**,全局生效 - 值必须是布尔型
false,不是字符串'false',否则无效 - 改完不用重启 Web 服务,但需清空浏览器缓存或换无痕窗口验证
MySQL 层必须同步收回 DROP 权限
光关按钮没用。攻击者可绕过 phpMyAdmin,直接连 MySQL 执行 DROP DATABASE xxx。所以必须从源头撤销权限:
- 用管理员账号登录 phpMyAdmin → 进入「用户账户」→ 编辑目标用户 → 取消勾选「DROP」权限(注意:是在「全局权限」或「数据库特定权限」里操作)
- 执行后点击「执行」,别忘了保存;若用命令行,运行
REVOKE DROP ON *.* FROM 'username'@'host'; - 特别注意:如果用户被授予了
ALL PRIVILEGES,先REVOKE ALL再重新授最小权限,否则REVOKE DROP不生效 - 验证方式:用该用户登录后执行
SHOW GRANTS;,确认输出里没有DROP
别漏掉 config.inc.php 里的 $cfg['IgnoreMultiSubmitErrors'] 隐患
这个参数默认为 true,会导致批量操作(比如同时删多个库)时跳过权限错误继续执行。一旦用户误点或被诱导提交恶意请求,可能删掉本不该碰的库。
- 显式设为
false:$cfg['IgnoreMultiSubmitErrors'] = false; - 它会让任何一条语句失败就中断整个操作,并报错提示,强制暴露权限问题
- 和
$cfg['AllowUserDropDatabase']配合,形成界面+逻辑双保险
真正起作用的是 MySQL 权限 + phpMyAdmin 配置的组合,单靠一个层面永远不牢靠。尤其是当用户能直连数据库时,phpMyAdmin 的按钮开关只是第一道提醒,不是锁。
相关文章
- Tplink企业版路由器WiFi名称的默认设置介绍(Tplink企业版路由器WiFi名称的默认设置是什么) 09-06
- Tplink路由器灯常亮无法上网的原因分析(如何解决Tplink路由器灯常亮无法上网的问题) 09-06
- Tplink千兆企业级路由器自动重启的作用和优势介绍(如何设置Tplink千兆企业级路由器自动重启功能) 09-06
- 一根天线的tplink路由器有哪些(一根天线的Tplink路由器的特点和优势介绍) 09-06
- tplink路由器外网访问不了nas(Tplink路由器外网访问NAS的原因分析) 09-06
- Tplink无法搜到路由器的原因分析(如何解决Tplink无法搜到路由器的问题) 09-06