mysql 角色(role)管理功能实现、创建role,role权限赋值、激活(基于mysql8.0)

以下操作都是基于mysql8.0的来实现的,电脑安装不上mysql 8.0的,请自行安装升级

  1. 创建角色(role)
  2. 将role的权限赋值给一个用户
  3. 查看用户被授权情况并激活权限!!重点,不然赋权之后用户也无法使用role里面的权限
  4. 进一步改进

创建角色

CREATE ROLE xx;
GRANT 权限 ON 数据库.表 TO XX;

--创建ROLE,并赋权限
create role read_SC;
grant select on lab2.SC to read_SC;

删除角色 使用drop语句
可以使用语句select * from role_edges;来查看当前数据库中有哪些role

使用role给用户赋权和对用户收回权限 GRANT XXROLE TO 用户名;

--创建ROLE,并赋权限
create role read_SC;
grant select on lab2.SC to read_SC;
--把ROLE赋给用户TEST
grant read_SC to TEST;

mysql 角色(role)管理功能实现、创建role,role权限赋值、激活(基于mysql8.0)_第1张图片
将一个能在数据库lab2中对表SC进行查找的ROLE赋给用户TEST
收回权限

REVOKE role FROM user;

查看授权情况并激活权限 使用 SHOW GRANTS.语句来查看一个用户的权限情况,例:

show grants for TEST;

查询用户TEST的权限情况,结果如下(USAGE表示无权限):
mysql 角色(role)管理功能实现、创建role,role权限赋值、激活(基于mysql8.0)_第2张图片
*如果想知道用户所拥有的role里面有哪些权限,可以在结尾加个 using role

show grants for TEST using read_SC;

mysql 角色(role)管理功能实现、创建role,role权限赋值、激活(基于mysql8.0)_第3张图片
SELECT ON lab2.SC 就是ROLE read_SC里的权限


激活角色
授予用户帐户的角色可以在帐户会话中处于活动状态或非活动状态。如果授予的角色在会话中处于活动状态,则其权限适用; 否则,他们没有。要确定当前会话中哪些角色处于活动状态,请使用该 CURRENT_ROLE()功能。
使用SELECT CURRENT_ROLE();语句查询激活情况
正常情况下显示为:
mysql 角色(role)管理功能实现、创建role,role权限赋值、激活(基于mysql8.0)_第4张图片
激活role的方式:
1、使用set default role 命令 (非永久激活)

SET DEFAULT ROLE ALL TO 用户;
退出,重新登录
SELECT CURRENT_ROLE();

这是就可以看到角色已经激活了
2、 (永久激活)
要在用户连接到服务器时自动激活所有显式授权和强制角色,请启用activate_all_roles_on_login 系统变量。默认情况下,禁用自动角色激活。

SET global activate_all_roles_on_login=ON;

本文参考:mysql8.0参考手册

你可能感兴趣的:(数据库)