全面了解MySQL 8.0的“角色”:基础使用、底层实现和一些要避开的“坑”

Oracle对MySQL5.7的扩展支持到2023年10月就结束了,之后可能不再发布新的版本,是时候更多的了解MySQL 8.0了。同时,再看看各个云厂商对于用户和角色的支持情况。

从8.0开始,MySQL开始支持“角色”,帮助用户更好的进行权限管理,使用角色功能,可以批量、规模化的管理用户的权限。如果,需要较大规模新建用户,并对其权限进行管理的时候,这个功能将大大简化权限增加、减少时候的管理工作。

另外,在8.0版本中,MySQL对角色的设计上,非常的“偷懒”,因此,还有很多的隐藏的打开方式,附带的也留下了一些坑需要注意。

基础使用示例

基础的:

  • “角色”是代表”一组权限”(例如,某个数据库的读权限、写权限等)的对象,可以将角色赋予某个用户后,该用户使用该角色运行时,则具备这”一组权限”。
  • 当角色的权限发生变化(例如,收回或者新增权限)时,对应用户(使用该角色时)的权限也会跟着改变,这对于规模化的用户、权限管理是很方便的。

我们看看如下场景与示例:

  1. 首先,创建角色t_r_01,并赋予其db_01的读权限;
  2. 然后,将该角色赋予用户 t_u_01;
  3. 这时,用户t_u_01就可以通过命令set role...使用t_r_01具备的权限
  4. 另外,也可以像t_u_02一样,将t_r_02设置为其默认角色,则时候,该用户登录时,就自动具备了该角色对应的权限了

对应命令如下:

mysql> CREATE ROLE t_r_01;
mysql> GRANT select ON db_01.* to t_r_01;

mysql> GRANT t_r_01 TO t_u_01;

% mysql -ut_u_01 -p -hxxx
> set role t_r_01;
> select * from db_01.user;

如上就是一个典型的用户和角色的使用场景和主要的命令。那么再看看一些“不典型”的情况吧。

角色底层实现和一些“坑”

在前面,我们看到一个普通的用户和角色,是怎么建立,以及如何利用这个角色实现批量对用户的权限进行管理。这里,我们来看看MySQL对角色的底层实现以及留下的一些“坑”。

从MySQL的元数据上,观察到,在底层:角色就是一个特殊的”用户”,一个没有密码的、被锁定的特殊用

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值