无法授予具有 GRANT OPTION 权限的角色

问题描述 投票:0回答:1

我有一个具有几个角色的 MariaDB 数据库。为了简单起见,我们假设我有一个

admins
角色。它是由
root
用户使用以下命令创建的:

CREATE ROLE admins;
GRANT ALL PRIVILEGES ON *.* TO admins WITH GRANT OPTION;

我还有另一个角色

default
,没有任何特权。 我将
admins
角色授予用户
myuser
(再次使用
root
):

CREATE USER myuser IDENTIFIED BY 'mysuperstrongpassword';
GRANT admins TO myuser;

考虑到这一点,我使用

myuser
帐户登录到会话,激活
admins
角色并创建了一个新用户
newuser
。但是,当我尝试将
default
角色授予
newuser
时,使用

GRANT default TO newuser;

我被

Access denied to user 'myuser'@'%'
击中。根据我对
GRANT OPTION
特权的理解,被授予者应该有权授予任何特权。是否需要不同的权限才能设置角色?

我找到了一些有关

ADMIN OPTION
权限的信息,但是无法将其授予具有

的用户或角色
GRANT ALL PRIVILEGES ON *.* TO [role|user] WITH ADMIN OPTION;

我无法验证我的版本是否存在

ADMIN OPTION

当前 MariaDB 版本是 10.11.7

mariadb
1个回答
0
投票

您列出了一些问题,所以如果我遗漏了任何问题,请发表评论。

授予用户的角色不是默认的。可以使用 SET DEFAULT ROLE 进行设置,例如:

SET DEFAULT ROLE admin FOR myuser

请注意,一个用户只能拥有一个默认角色。使用 SET ROLE 切换到显式角色(如果有):

SET ROLE admin

对于您的

default
角色,如果您希望所有用户都拥有一组基本权限,请使用
TO PUBLIC
语法 (ref):

GRANT SELECT ON common_db.* TO PUBLIC

授予

ADMIN OPTION
不是特权,因此它具有 显式语法(不使用
PRIVILEGE
):

GRANT admin ON [role|user] WITH ADMIN OPTION

GRANT default ON myuser WITH ADMIN OPTION
© www.soinside.com 2019 - 2024. All rights reserved.