phpMyAdmin 的 hide_db 必须为每个 MySQL 实例单独配置在 $cfg['Servers'][$i] 区块内,不支持全局设置;正则需带 ^$ 锚点,优先用 hide_db(黑名单)而非 only_db(白名单);修改后需确认文件、索引连续、重启服务并清理 pma__userconfig 表。

不能为不同 MySQL 实例分别设置 hide_db,phpMyAdmin 的 $cfg['Servers'][$i]['hide_db'] 是每个服务器独立生效的——你完全可以、也必须为每台实例单独配置。
每个 $cfg['Servers'][$i] 区块都要单独加 hide_db
phpMyAdmin 不支持全局统一隐藏规则,所有数据库过滤逻辑都绑定在具体服务器配置内。这意味着:
-
hide_db必须写在每个$cfg['Servers'][$i]的大括号内部,不能提出来放在外面 - 若你配置了 3 台 MySQL(
$i = 1, 2, 3),就得为每个写一遍,哪怕内容相同 - 不同实例可以设不同规则:比如测试库隐藏
^(mysql|sys)$,生产库只隐藏^information_schema$ - 正则必须带锚点
^和$,否则像mysql会误匹配my_mysql_backup
only_db 和 hide_db 别混用,优先选 hide_db
only_db 是白名单模式,只显示指定库;hide_db 是黑名单模式,隐藏指定库。两者互斥,同时存在时 only_db 会覆盖 hide_db。实际中更推荐 hide_db:
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。
-
only_db要求你提前知道所有业务库名,新增库就得改配置,运维成本高 -
hide_db针对系统库写一次就基本一劳永逸,适配新库无压力 - 如果用了下划线分组(如
app_v1、app_v2),注意$cfg['NavigationTreeDbSeparator']默认是_,可能干扰正则匹配——可显式设为'|'避免歧义
修改后不生效?先确认这三件事
常见“改了没反应”不是配置错,而是环境或缓存卡住了:
- 检查是否改对了文件:一定是
config.inc.php,不是config.default.php或config.sample.inc.php - 确认
$i索引连续且从 1 开始:跳号(如$i = 3后直接写$i = 5)会导致中间配置被忽略 - 重启 Web 服务(Apache/Nginx)或至少清空浏览器缓存——phpMyAdmin 不热加载配置,改完不重启等于没改
最易被忽略的是:phpMyAdmin 会把部分用户配置存进 phpmyadmin 数据库的 pma__userconfig 表里,一旦这里写了 hide_db 字段,就会覆盖 config 文件里的设置。真遇到“死活不生效”,直接连 MySQL 执行 UPDATE pma__userconfig SET config_data = '{}' WHERE username = 'your_user'; 清掉它。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










