2011-10-06 103 views
10

我有一个数据库,我希望用户能够创建新用户。这可以通过GRANT CREATE USER如下实现:我如何“授予创建用户”作为非root用户?

grant create user on *.* to foo; 

这很好用,foo可以创建用户。我的问题是,如果以root用户身份运行上述行,但如果以普通用户身份运行,即使此用户已具有CREATE USER权限,也不起作用。

简而言之,普通用户不能委派创建用户的能力。我一直在寻找你需要能够做到这一点的任何特权,并且我开始认为这是只有root可以做的事情,尽管我在MySQL文档中没有找到任何证据。

问题:如何让普通用户让新用户创建用户?

回答

7

尝试授权之后运行查询:

FLUSH PRIVILEGES; 
8

两个答案是有用的 - 我用这两者的组合,似乎已经奏效。

,作为root(admin是一个普通用户):

mysql> grant create user on *.* to admin with grant option; 
Query OK, 0 rows affected (0.00 sec) 

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec) 

由于管理员(请记住,他是一个普通用户):

mysql> grant create user on *.* to foo with grant option; 
Query OK, 0 rows affected (0.00 sec) 

太谢谢你了。

4
-- Create username user 

GRANT ALL PRIVILEGES ON `tshirtshop`.* 
     TO 'username'@'localhost' IDENTIFIED BY 'password' 
     WITH GRANT OPTION;