用PhpMyAdmin默认会把所有数据库都显示出来,一些如 MySQL,information_schema之类的也会显示,这样既不安全看着也不爽,隐藏掉最好。
修改 config.inc.php 或者 config.sample.inc.php
默认应该是没有这两个配置的,可以手动添加上:
only_db 是只显示的数据库名, 用数组格式
hide_db 是执行要隐藏的数据库名,用正则匹配模式
根据你的实际情况,两个中选一个设置就行了
$cfg['Servers'][$i]['only_db'] = array('youqumob_union');
$cfg['Servers'][$i]['hide_db'] = '^(performance_schema|information_schema|phpmyadmin|mysql)';
上面这些其实网上都有许多人提到过了,我这里主要是说明下面的问题:
如果你的数据库是用 _ 下划线来区分前缀分组的话,这是可能存在一个 BUG ,隐藏会失效
如下图:
我明明在配置中已经设置了只有 union 能显示,其他的都给隐藏,但唯独同前缀的 count 仍然显示,拒不服从隐藏命令。
纠结了好半天,终于找到原因,是因为默认的数据库名分隔符的原因,换成其他符号就行了,但是 _ 下划线就不能进行分组管理了,这实际上个是个很好的功能,数据库多了看的头昏眼花,有个分组好得多,但因为这个 BUG 就用不了了,没心思改源码,将就了吧。
也可在配置文件中添加代码:
// 设置数据库名分隔符,默认是 _ 下划线
$cfg['NavigationTreeDbSeparator'] = '|';
尼玛,太坑爹了。。。发现一个很崩溃的问题,上面设置的时候,估计是面板上提交配置会被写入数据库,导致配置文件修改始终无效了,只有通过服务器命令行下进行修改恢复。
进入 phpmyadmin 数据库,如果你有装他这个数据库的话跟你的配置来。
更新下这个配置字段,去掉 hide_db 和 only_db 的配置
update pma__userconfig set config_data = '{"lang":"zh_CN","collation_connection":"utf8mb4_unicode_ci"}' where username = 'root';
这样就可以恢复了。。。无语