社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL8功能详解——角色

老叶茶馆 • 5 年前 • 453 次点击  

角色功能对于Oracle的DBA来说,不是什么特殊功能,但对于MySQL而言,这是一个人心所盼的功能。

MySQL的DBA现在可以创建角色、对其赋予权限,并将它们授予用户。使用角色可以大量减轻DBA的工作,可以轻松管理每个团队、用户的各种复杂的权限。

下面详细介绍一下MySQL中如何使用角色:

创建删除角色:

创建角色使用 “CREATE ROLE”语句,假设我们为应用程序创建只读角色、读写角色和开发人员角色。

角色的名称与MySQL的账户名称非常相似,由用户名+主机名称构成,如果省略主机名称则默认为'%'。

删除角色使用:

赋予/撤销权限:

角色创建以后,需要对其赋予相应的权限。使用下列语句分别对角色赋予全部权限、只读权限和读写权限:

赋予角色权限后,将相应的角色授予用户。例如:

创建用户

授予角色权限

撤销用户的角色和撤销角色的权限:

查看角色的权限:

当角色授予用户后,我们可以查看用户拥有的权限,执行:

是否注意到,执行show grants语句只是看到了用户被赋予了角色,该角色具有哪些权限该如何查看呢?执行下面的语句可以确认相关内容:


强制性角色:

MySQL可以通过mandatory_roles 变量来配置强制性角色。使用强制性角色,服务器会为全部的账户默认赋予该角色,而不需要显示执行赋予角色。可以使用my.cnf文件或者使用SET PERSIST进行配置,例如:

[mysqld]

mandatory_roles='role1,role2@localhost'


SET PERSIST mandatory_roles = 'role1,role2@localhost;

需要注意的是,配置在mandatory_roles中的角色不能撤销其权限,也不能删除。

角色自动激活:

赋予用户帐户的角色在帐户会话中可以处于活动状态,也可以处于非活动状态。如果赋予的角色在会话中处于活动状态,则具有相应的权限,反之则没有。要确定当前会话中哪些角色处于活动状态,使用CURRENT_ROLE()函数。

默认情况下,向帐户赋予角色或在mandatory_roles系统变量值中为其命名后,该角色在帐户会话中不会变为活动状态。要指定每次用户连接到服务器,进行身份验证时激活角色,请使用 SET DEFAULT ROLE:

之后,用app_dev_user登陆服务器,查看当前角色权限:

要在用户连接到服务器时,使所有显式赋予的角色和强制角色自动激活,请启用activate_all_roles_on_login 系统变量。默认情况下,禁用自动角色激活。


关于MySQL中使用角色就介绍到这里,更为详尽的内容请访问官网手册

https://dev.mysql.com/doc/refman/8.0/en/roles.html


感谢您关注MySQL!



叶老师新课程《MySQL性能优化》已经在腾讯课堂发布,本课程讲解读几个MySQL性能优化的核心要素:合理利用索引,降低锁影响,提高事务并发度。下面是报名小程序码,厚着脸皮请求大家推荐给需要的小伙伴们。


下面是本课程内容目录

扫码加入MySQL技术Q群
(群号:650149401)
点“在看”给我一朵小黄花
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54356
 
453 次点击