乌徒帮技术范儿技术中心MySQL › phpmyadmin隐藏多个数据(information_schema|mysql)

phpmyadmin隐藏多个数据(information_schema|mysql)

分类:MySQL

phpmyadmin安装好之后,无论用什么账户登录,都会显示information_schema、mysql、test三个mysql默认安装的数据库,test的一个测试数据库,可以删除,但另外两个是配置数据库,不能删除,即使删除其中的某些数据,也会导致mysql运行错误。但是作为管理者,并不希望用户能看到这些数据库,那么应该怎样隐藏它们呢?

网络上随便一搜,都会有很多方法一样的文章,即打开phpmyadmin的配置文件,修改$cfg['Servers'][$i]['hide_db'] = ''; 添加想要隐藏的数据库名即可。但是几乎所有的文章都告诉大家:不过此功能有个缺陷,就是只能隐藏一个数据库。这分明是没有看文档信口胡说的。

新版的phpmyadmin配置文件的/libraries/config.default.php,根目录下有一个config.sample.inc.php,修改为config.inc.php之后据说有比前者更高的执行优先权。我没有使用config.inc.php。

在phpmyadmin的官方文档中对hide_db有相对比较完整的说明:

hide_db

Regular expression for database name(s) to be hidden from listings. This does not replace using proper privilege rules on the MySQL server - it only hides the database in the navigation frame.

For example, to hide all databases beginning with the letter a use:?$cfg['Servers'][$i]['hide_db'] = '^a';. To hide multiple databases by name use?$cfg['Servers'][$i]['hide_db'] = '(information_schema|phpmyadmin|mysql)'.

More information on regular expressions in PHP can be found in the?PCRE pattern reference?portion of the PHP manual.

$cfg['Servers'][$i]['hide_db'] = '';

查看原文通过浏览器搜索hide_db。

文档中说的很清楚,如果想要隐藏全部以a开头的数据库,可以使用'^a',如果想隐藏一个列表,可以使用'(information_schema|phpmyadmin|mysql)'的形式。我即使用了列表形式,隐藏掉了(information_schema|mysql)这两个数据库。

填写个人信息,赶快回复吧!