如何防止用户访问特定的架构?

4
我有一台服务器,是为我创建的。其中有一个名为“test”的模式。
我使用root用户登录,并创建了一个名为“WEB”的新模式。
create schema WEB;

我希望现在能创建一个用户,该用户只能看到新模式。因此我按照以下方式创建了一个用户:
create user webtestuser identified by 'webtestuser';

grant select, insert, update, delete on WEB.* to webtestuser;

问题在于,当我使用新用户登录时,我仍然可以看到“test”模式。即使我对该用户执行“revoke all”操作,该模式仍然可见。
这里有什么遗漏吗?
谢谢!

1
请您以该用户身份登录,并发布SHOW GRANTS;命令的输出。 - James C
你尝试过撤销用户对测试模式的权限,然后执行 FLUSH PRIVILEGES 吗? - ypercubeᵀᴹ
1个回答

3
默认情况下,MySQL会为定义的测试模式提供一些授权。它们是ALL ON testALL ON test\_%,分别授予所有用户对test模式及其匹配项(如test_footest_123)的所有权限。由于它们的定义方式,我无法使用REVOKE ... FROM语法来删除这些授权,所以您需要使用以下方法:
DELETE FROM mysql.db WHERE Db IN("test","test\_%") AND User="" AND Host="%";
FLUSH PRIVILEGES;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接