如何启用MYSQL用户访问除一个数据库之外的所有数据库

时间:2018-04-19 20:26:57

标签: mysql

所以我知道类似的问题已被问到,但就我所知,从来没有任何完全相同的问题。基本上我有我的主root用户可以访问所有内容,然后我希望第二个用户可以访问localhost上的所有内容,除了一个数据库。从技术上讲,我想删除他们对所有带有前缀的数据库的访问权限,但我想我会从一开始。我发现的问题是我想要限制的数据库可能会随着时间的推移而改变,但它们总是会有一个前缀。反正,

通常设置一个有权访问我所做的一切的用户

GRANT ALL PRIVILEGES ON *.* TO 'miniroot'@'localhost' WITH GRANT OPTION;

这样,如果我创建一个新的数据库miniroot将始终具有访问权限,这很好。但是我有一些前缀为' PRIVATE'的表格。我想miniroot无法访问这个。

我在这里看到了一个关于如何撤销数据库访问权限的答案

REVOKE all on PRIVATE.* from 'miniroot'@'localhost';

然而这不起作用,并说ERROR 1141 (42000): There is no such grant defined for user 'miniroot' on host 'localhost'这是真的,我需要我的miniroot才能访问新的数据库,因为它们不是特定的集合。所以我不能从集合中删除一个。我对如何使这项工作有任何想法?

1 个答案:

答案 0 :(得分:1)

好吧,

  

您可以使用通配符%和_来匹配模式:

您可以使用与想要完成的内容相反的方法

CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'password';
GRANT ALL ON  `public%`.* TO 'jeffrey'@'%';

因此用户只能访问只有前缀为public 的模式,其他名称为private或任何不会被访问的名称