MariaDB:创建后角色不适用

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

我由具有全局权限的用户在 MariaDB 中创建角色:

CREATE ROLE role_test

创建后,角色在“角色映射”中可见:

SELECT * from mysql.roles_mapping;

但在“适用角色”中看不到:

SELECT * FROM information_schema.APPLICABLE_ROLES;

并且无法将角色授予用户。

但是,如果我使用也具有全局权限的用户“root@localhost”创建角色,那么该角色会立即出现在“适用角色”中:

我做错了什么?

mariadb roles
1个回答
0
投票

您的问题中缺少一些信息来准确指出问题,但我会尽力解释发生了什么事,希望您能找到问题所在。

  1. INFORMATION_SCHEMA.applicable_roles
    中进行选择时,您将获得当前登录用户可以激活(使用
    SET ROLE
    )的角色列表。因此,内容会根据您登录的用户身份而有所不同。
  2. INFORMATION_SCHEMA.applicable_roles
    中进行选择时,用户拥有什么全局权限并不重要。重要的是
    mysql.role_mappings
    中的内容。如果将角色授予用户,它将显示在
    INFORMATION_SCHEMA.applicable_roles
    when 以该用户身份查询
    applicable_roles
  3. 创建角色后,该角色会自动授予创建它的角色,并且该用户可以将新创建的角色授予其他用户或角色。因此,如果您使用
    root@localhost
    创建了角色,当您查询以
    INFORMATION_SCHEMA.applicable_roles
    登录的
    root@localhost
    时,您将看到该角色,并且您会看到
    IS_GRANTABLE
    设置为
    YES

能够为用户提供

GRANT
角色由
WITH_ADMIN
中的
mysql.role_mappings
标志控制。

为了让用户

A@%
能够将角色 R1 授予任何其他用户,用户 A 必须已授予角色 R1,如下所示:

GRANT R1 TO A WITH ADMIN OPTION;

没有

WITH ADMIN OPTION
A@%
只能为自己激活角色,不能授予他人。

© www.soinside.com 2019 - 2024. All rights reserved.