phpMyAdmin隐藏系统数据库需修改config.inc.php中的$cfg['Servers'][$i]['hide_db']选项,正则格式为'^(mysql|information_schema|performance_schema|sys)$',修改后需清除浏览器缓存并重启PHP服务。
phpMyAdmin 隐藏系统数据库的配置位置在哪
默认情况下,phpmyadmin 会把 mysql、information_schema、performance_schema、sys 这些系统库也列在左侧导航树里。想隐藏它们,不是靠界面点击,而是改配置文件——核心是 $cfg['servers'][$i]['hide_db'] 这个选项,它在 config.inc.php 里。
注意:这个文件通常位于 phpMyAdmin 安装根目录下,不是 Apache/Nginx 的全局配置;如果用的是 Docker 或一键包(如 XAMPP、MAMP),得先确认你编辑的是实际生效的那个 config.inc.php,而不是模板或备份文件。
怎么写正则表达式匹配所有系统库
hide_db 支持正则,但必须用 PCRE 语法,且**整个数据库名必须完全匹配**。常见错误是写成 ^mysql|information_schema$,结果只隐藏了 mysql 开头或 information_schema 结尾的库——这显然不对。
- 正确写法:
$cfg['Servers'][$i]['hide_db'] = '^(mysql|information_schema|performance_schema|sys)$'; - 如果还用了
phpmyadmin(phpMyAdmin 自身的配置库),也建议一并加进去:^(mysql|information_schema|performance_schema|sys|phpmyadmin)$ - 大小写敏感:MySQL 默认库名全小写,所以正则不用加
i修饰符;如果服务器启用了lower_case_table_names=0,需按实际大小写调整
为什么改完不生效?检查这几个点
改完 config.inc.php 后刷新页面没变化,大概率是缓存或权限问题:
- 浏览器缓存:强制刷新(Ctrl+Shift+R 或 Cmd+Shift+R),排除 JS/CSS 缓存干扰
- PHP opcode 缓存:如果启用了
opcache,重启 PHP-FPM 或 Web 服务(如sudo systemctl restart php-fpm) - 配置未加载:确认修改的是被实际加载的配置文件——可在 phpMyAdmin 首页底部看“版本信息”旁的“配置文件路径”,点进去核对
- 多服务器配置:如果你定义了多个
$cfg['Servers'],要确保给对应索引(比如$i = 1)的服务器设置hide_db,而不是只改第一个
隐藏后还能访问系统库吗
能。隐藏只是不显示在导航树里,不影响直接输入库名访问——比如在 SQL 窗口执行 USE mysql; 或手动在地址栏拼 ?db=mysql&token=xxx 依然可用。
立即学习“PHP免费学习笔记(深入)”;
如果目标是彻底限制访问,hide_db 不够用,得配合 MySQL 用户权限控制(比如给该用户只授非系统库的 SELECT 权限),或者用 phpMyAdmin 的 $cfg['Servers'][$i]['only_db'] 限定可见库范围。但后者会同时限制操作权限,比单纯隐藏更重,容易误伤业务库。
真正容易被忽略的是:某些插件或扩展(比如 Designer、GIS 功能)可能依赖 information_schema 的元数据查询,隐藏后这些功能按钮可能变灰或报错——遇到时临时取消隐藏或单独放开一个库更稳妥。



















