MariaDB:创建后角色不适用

jbose2ul  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(52)

我在MariaDB中创建了一个角色,该角色由具有全局权限的用户创建:
x1c 0d1x的数据

CREATE ROLE role_test

字符串
创建后,角色在“角色Map”中可见:

SELECT * from mysql.roles_mapping;


但在“适用角色”中不可见:

SELECT * FROM information_schema.APPLICABLE_ROLES;


而且无法将角色授予用户。
但是如果我使用具有全局权限的用户“root@localhost”创建角色,则角色立即出现在“适用角色”中:



即使我将角色授予应该将其授予另一个用户的用户,并使用ADMIN OPTION进行操作,这也是不可能的:

GRANT role_msc_cus TO 'msc_dev'@localhost;
GRANT ALL PRIVILEGES ON *.* TO 'msc_dev'@localhost IDENTIFIED BY 'xxx';
FLUSH PRIVILEGES;
GRANT role_msc_cus TO '[email protected]'@'localhost' WITH ADMIN OPTION


=>“Access denied for user 'admin_dev'@'localhost'

inkz8wg9

inkz8wg91#

在你的问题中有一点缺失的信息,以准确地指出问题,但我会尽我所能来解释发生了什么,希望你能找到它出错的地方。
1.当从INFORMATION_SCHEMA.applicable_roles中选择时,您将获得当前登录用户可以激活(使用SET ROLE)的角色列表。因此,内容将根据您登录的用户而有所不同。
1.从INFORMATION_SCHEMA.applicable_roles中选择时,用户具有什么全局权限并不重要。重要的是mysql.role_mappings中的内容。如果用户被授予角色,则当**以该用户身份查询applicable_roles时,该角色将显示在INFORMATION_SCHEMA.applicable_roles中。
1.创建角色时,该角色会自动授予创建它的角色,并且该用户可以将新创建的角色授予其他用户或角色。因此,如果您使用root@localhost创建了角色,当您以root@localhost登录INFORMATION_SCHEMA.applicable_roles时,您将看到角色在那里,并且您将看到IS_GRANTABLE设置为YES
能够将角色GRANT传递给用户是由mysql.role_mappings中的WITH_ADMIN标志控制的。
要使用户A@%能够将角色R1授予任何其他用户,用户A必须具有角色R1,如下所示:

GRANT R1 TO A WITH ADMIN OPTION;

字符串
如果没有WITH ADMIN OPTIONA@%只能为自己激活角色,而不能将其授予他人。

相关问题