phpmyadmin 5.2+ 默认隐藏 information_schema、performance_schema、sys,仅 mysql 不在默认隐藏列表;需在 config.inc.php 的 $cfg['servers'][$i] 块内用锚定正则(如 '/^(information_schema|performance_schema|sys)$/i')配置 hide_db 才能手动控制,且该隐藏仅为 ui 过滤,不替代 mysql 层权限控制。
phpmyadmin 默认不显示 information_schema 是正常行为
不是出错,也不是权限丢失,而是 phpmyadmin 5.2+ 版本起默认隐藏 information_schema、performance_schema、sys 这类系统库——仅 mysql 库不在默认隐藏列表里。如果你没改过配置却看不到 information_schema,大概率是版本自带行为,不是故障。
hide_db 配置写错导致完全不生效
想手动控制显示/隐藏,必须编辑 config.inc.php 文件,在对应 $cfg['Servers'][$i] 块内添加正则规则。常见错误包括:
- 把
hide_db写成字符串(如'information_schema'),它只接受 PCRE 正则,且必须带分隔符,比如/^(information_schema|performance_schema|mysql|sys)$/i - 漏掉锚定符
^和$,导致匹配失控(例如my_info_schema也被误杀) - 写在错误层级:必须在
$cfg['Servers'][$i]块内部,不能放在全局作用域或别的配置项后面 - 改了
config.sample.inc.php而非实际加载的config.inc.php(后者通常位于 phpMyAdmin 根目录)
MySQL 层权限缺失才是真原因
即使 phpMyAdmin 显示了 information_schema,点进去也可能报错或查不到数据——因为最终能否访问取决于 MySQL 用户权限,不是前端开关能绕过的。验证方式很简单:
用同一账号登录命令行 MySQL,执行 SHOW GRANTS FOR CURRENT_USER();,检查输出里是否有类似 GRANT SELECT ON `information_schema`.* TO ... 的语句。没有?那就得在 MySQL 侧授权:
GRANT SELECT ON `information_schema`.* TO 'your_user'@'host'; FLUSH PRIVILEGES;
注意:MySQL 8.0+ 默认限制普通用户对部分 information_schema 表(如 STATISTICS)的访问,但 SCHEMATA 和 TABLES 通常仍可查,除非显式 REVOKE。
隐藏 ≠ 安全,别混淆两层控制逻辑
hide_db 只影响左侧数据库列表的渲染,是纯 UI 过滤;它不拦截 SQL 请求,也不修改权限。用户仍可通过手动输入 SELECT * FROM information_schema.TABLES 获取元数据——只要 MySQL 账号本身有 SELECT 权限。
真正安全的做法是两层都设防:phpMyAdmin 用正则隐藏视觉入口,MySQL 层用 REVOKE SELECT ON information_schema.* 收紧实际能力。很多人只做前者,结果以为“看不见就等于不能碰”,这是最常被忽略的风险点。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











