允许具有有限数据库访问权限的MySQL用户创建具有类似访

时间:2016-03-22 15:59:20

标签: mysql

我知道我可以创建具有create user权限的用户,如下所示:

create user primary_user identified by 'pass';
grant all on *.* to primary_user with grant option;

这将允许我在使用primary_user登录时创建用户。

现在让我们假设我有一个数据库的子集,所有数据库都带有前缀abc_,并且我希望我的primary_user只能访问这些数据库。

然后上面的grant查询看起来像这样:

grant all on `abc_%`.* to `primary_user` with grant option;

现在的问题是,当我使用primary_user登录并尝试创建secondary_user时,我收到以下错误:

  

错误1227(42000):拒绝访问;你需要(至少一个)   此操作的CREATE USER权限

TL; DR

基本上我想要的是primary_user只能访问带有abc_前缀的数据库,并且还能够创建次要用户,而这些用户又只能访问带有{的数据库{1}}前缀。

这可能吗?或者,我是唯一一个使用abc_ create user权限的用户帐户创建辅助用户的选项?

1 个答案:

答案 0 :(得分:1)

MySQL Documentation中所述:

  

要使用CREATE USER,您必须具有全局CREATE USER权限或   mysql数据库的INSERT权限。

因此,具有特定数据库特权的用户无法创建用户。当然,由于您有with grant option,您的primary_user可以将所有数据库级权限授予其他已创建的用户(对于abc_数据库)。

注意#1:Here您可以找到一个有趣的表格,其中包含各种特权以及可以授予的不同级别。

注意#2:在向非管理员用户提供GRANT OPTIONS时要格外小心,因为他们可以修改其他用户的权限,这可能会导致混乱Open Web Application Security Project州:

  

[授予权限] ...应适当限制在DBA和数据(表)中   拥有者。根据需要提供特定权限并使用   不同用途的不同登录。