23

我可以隐藏数据库不写这一行

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

在 config.inc.php 文件中 pf phpmyadmin。

可以通过http://www.test.com/phpmyadmin/index.php?db=information_schema&token=3ba37ae1e41f6a10e4afc7c69b934bba之类的 url 访问该数据库的内容

如何删除 information_schema 数据库的完全访问权限?

4

4 回答 4

33

按着这些次序:

  1. 如果需要,打开 phpMyAdmin,对自己进行身份验证
  2. 转到设置 > 功能 > 数据库
  3. 将要隐藏的数据库列表放入隐藏数据库字段中,用竖线 ( |) 分隔每个条目,即:information_schema|performance_schema|mysql|phpmyadmin
  4. 单击应用按钮

根据下面KeshV的评论,根据您的操作系统(Linux、Windows 等)和环境配置,您可能需要使config.inc.php文件可写,以便在服务器或浏览器重新启动之间保持上述更改。

但是,在某些配置和某些phpMyAdmin版本中,上述设置直接存储在 cookie 中,并且即使在config.inc.php文件中添加了注释也会保留。

于 2017-04-15T10:52:07.573 回答
28

您甚至可以使用管道分隔符隐藏多个数据库

$cfg['Servers'][$i]['hide_db'] = 'information_schema|performance_schema|mysql';
于 2016-02-09T05:06:53.563 回答
5

如果您还想限制用户从您发布的 url 访问 information_schema 并且您对hide_db配置指令不满意,那么您可以在 phpmyadmin 的 config.inc.php 文件中添加以下行。

if($_GET['db'] == 'information_schema')exit;
于 2012-10-29T10:34:34.390 回答
3

我会在最高投票的答案上写此评论,但我还没有足够的声誉。

指定多个数据库时,请记住它在 RegEx 规则下运行(如帮助所述)。因此,虽然这不太可能,但放置“information_schema|performance_schema|mysql”也会隐藏包含这些字符串的任何数据库。

相反,输入“^information_schema|performance_schema|mysql$”。在正则表达式中,^ 表示字符串的开头,$ 表示结尾。

这意味着您还可以通过部分字符串隐藏数据库。虽然您应该始终通过 MySQL 用户权限控制数据库访问,但您可以使用部分匹配隐藏数据库组。例如,如果您不希望所有测试数据库都可见,则可以将“^test_”放在隐藏数据库字段中,它将隐藏所有以 test_ 开头的数据库。例如 test_123、test_456。

于 2018-05-03T05:08:41.240 回答