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;

测试效果
将一个能在数据库lab2中对表SC进行查找的ROLE赋给用户TEST
收回权限

REVOKE role FROM user;

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

show grants for TEST;

查询用户TEST的权限情况,结果如下(USAGE表示无权限):
在这里插入图片描述
*如果想知道用户所拥有的role里面有哪些权限,可以在结尾加个 using role

show grants for TEST using read_SC;

在这里插入图片描述
SELECT ON lab2.SC 就是ROLE read_SC里的权限


激活角色
授予用户帐户的角色可以在帐户会话中处于活动状态或非活动状态。如果授予的角色在会话中处于活动状态,则其权限适用; 否则,他们没有。要确定当前会话中哪些角色处于活动状态,请使用该 CURRENT_ROLE()功能。
使用SELECT CURRENT_ROLE();语句查询激活情况
正常情况下显示为:
在这里插入图片描述
激活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参考手册

  • 17
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值