在 config.inc.php 的 $cfg['servers'][$i] 块内添加 $cfg['servers'][$i]['hide_db'] = '^(information_schema|performance_schema|mysql|sys)$';,需用锚定正则、确保配置生效、理解其仅为 ui 隐藏而非权限控制。
phpmyadmin 配置里怎么屏蔽 information_schema?
直接改配置文件 config.inc.php,加一行过滤规则就行。phpmyadmin 本身不提供界面开关,必须手动编辑配置——不是在 web 界面点几下就能关掉的。
常见错误是把规则写进错误位置(比如写在 $cfg['Servers'][$i]['host'] 后面但没对齐层级),或用了已废弃的 $cfg['Servers'][$i]['hide_db'](PHP 7.4+ 和新版 phpMyAdmin 已不认这个)。
- 确保你在修改的是实际生效的
config.inc.php(通常位于 phpMyAdmin 根目录,不是config.sample.inc.php) - 在
$cfg['Servers'][$i]块内添加:$cfg['Servers'][$i]['hide_db'] = '^(information_schema|performance_schema|mysql|sys)$';
- 正则必须用
^和$锚定,否则可能误杀库名含schema的用户库(比如my_schema_v2)
为什么用正则而不是简单字符串匹配?
因为 phpMyAdmin 的 hide_db 只支持正则,不支持通配符或数组。写成 'information_schema' 是无效的,它会当字面量去匹配,而数据库名前后其实有不可见字符或大小写差异,根本不会命中。
另外,只屏蔽 information_schema 不够——performance_schema、mysql、sys 同样属于系统库,暴露出来有安全和干扰风险。一次性全拦住更稳妥。
-
information_schema:只读元数据,普通用户查不到表内容,但能看到结构 -
performance_schema:记录运行时性能数据,部分字段敏感 -
mysql:存用户权限、插件等关键配置,误操作可能锁死访问 -
sys:基于performance_schema的视图封装,同样应隐藏
改完配置后不生效?检查这三件事
最常卡在这一步:改了配置却还是能看到那些库。不是配置写错了,就是环境没刷新对。
- 确认 PHP 进程重载了配置——如果是 Apache,执行
sudo systemctl reload apache2;Nginx + PHP-FPM 则需sudo systemctl reload php*-fpm(版本号要对得上) - 浏览器强制硬刷(Ctrl+F5 或 Cmd+Shift+R),phpMyAdmin 会缓存数据库列表 30 秒左右
- 检查当前登录账号是否被赋予了
SHOW DATABASES权限——如果 MySQL 层本身允许看到这些库,phpMyAdmin 的隐藏只是前端过滤,后端请求仍可能返回(不过新版默认已做后端过滤)
隐藏后会不会影响导出或 SQL 执行?
不影响。隐藏只是让它们不出现在左侧数据库列表和下拉菜单里,你手动在 SQL 栏输入 USE information_schema; 或 SELECT * FROM information_schema.TABLES; 依然能执行——只要 MySQL 账号权限允许。
这点容易被忽略:以为“隐藏=禁止访问”,其实只是 UI 层收敛。真要限制访问,得在 MySQL 侧 revoke 权限,或者用代理层拦截。phpMyAdmin 的 hide_db 本质是“眼不见”,不是“手不能碰”。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











