如何防止用户在MySQL中看到数据库和表的列表?

问题描述 投票:0回答:1

我正在Google Cloud上使用MySQL 5.7.25版。

我撤消了所有特权:

REVOKE ALL ON *.* FROM 'user1';

我在一个表上添加了SELECT特权:

GRANT SELECT ON database1.table1 TO 'user1';

我使用以下方式检查特权:

SHOW GRANTS FOR 'user1'

Result:
GRANT USAGE ON *.* TO 'user1'@'%' WITH GRANT OPTION
GRANT SELECT ON `database1`.`table1` TO 'user1'@'%'

现在'user1'无法访问其他表。但是,“ user1”仍然可以使用以下方式查看数据库和表的列表:

SHOW DATABASES
SHOW TABLES

我尝试使用:

REVOKE SHOW DATABASES ON *.* FROM 'user1';

在文档中,这似乎是我要撤消的命令。但是,这对特权没有任何其他影响,因为USAGE特权将覆盖此SHOW DATABASES特权。

我已经看到在启动时使用“ skip-show-database”的建议,但是这将关闭所有用户的SHOW DATABASES命令。

如何限制用户仅查看可用的数据库和表?或如何完全关闭单个用户的这些命令?

mysql google-cloud-sql privileges
1个回答
0
投票

根据MySQL documentation for the SHOW DATABASES statement

SHOW DATABASES

If the server was started with the --skip-show-database option, you cannot use this statement at all unless you have the SHOW DATABASES privilege 标志在skip_show_database上。

© www.soinside.com 2019 - 2024. All rights reserved.