2

我有一个用户,我以该用户身份登录。该用户执行以下操作:

创建数据库错误;

工作正常。

将所有关于错误。* 授予 'bugs@localost';

而且我知道我没有授予访问权限(当前登录用户)。

我显示登录用户的权限(通过 select user(); 验证)
+-------------------------------- -------------------------------------------------- -----------------------------------------+
| 授予 user1@% |
+-------------------------------------------------- -------------------------------------------------- ------------+
| 将 *.* 上的所有特权授予 'user1'@'%' 由密码 ' * ' 识别 |
| 将所有权限授予aDatabase.* TO 'user1'@'%' |
+-------------------------------------------------- -------------------------------------------------- ------------+
2 行(0.00 秒)

(我将登录的用户更改为user1,并将第二个所有权限更改为aDatabase,
我可以以root身份登录并授予权限就好了......

那么除了“所有特权”之外,我还需要什么特权??!??什么命令将它们授予我。

4

1 回答 1

2

问题是执行有问题的语句

grant all on bugs.* to 'bugs@localost';

需要一个名为 GRANT OPTION 的权限,与您可能认为的未包含在所有权限中的相反。即使这样,用户也只能将特权授予他最初拥有的其他用户。请参阅在线文档

要在您的第一个授权命令中包含 GRANT OPTION,请使用以下命令:

GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' WITH GRANT OPTION;

我已从您的授权声明中删除了 IDENTIFIED BY PASSWORD 子句。

于 2013-07-22T16:16:10.850 回答