mysql8在之前的版本中并没有角色(role)的概念,在角色概念出现之前,mysql对用户授权是一个用户起码一条授权记录,假如有多个用户需要同样的权限,那只能增加多个授权记录,同理,如果需要对多个相同权限用户进行权限调整,只能逐个操作。现在则可以简化这一流程,只需调整角色权限即可,不再需要对每个用户做维护。

图示变化:

​一、角色的日常使用

1、创建角色,和创建用户一样,默认host后缀是%,可以看出角色默认是无密码的

mysql> create role 'read_role';

mysql> select host,user,authentication_string from mysql.user where user='read_role';

+------+-----------+-----------------------+

| host | user | authentication_string |

+------+-----------+-----------------------+

| % | read_role| |

+------+-----------+-----------------------+

2、角色设置权限,和用户授权一样

mysql> grant select on db_kenyon.* to 'read_role';

mysql> show grants for 'read_role';

+--------------------------------------------------+

| Grants for read_role@% |

+--------------------------------------------------+

| GRANT USAGE ON *.* TO `read_role`@`%` |

| GRANT SELECT ON `db_kenyon`.* TO `read_role`@`%` |

+--------------------------------------------------+

3、关联用户角色

mysql> create user 'read_usr1' identified by 'Eric@2020';

mysql> create user 'read_usr2' identified by 'Eric@2020';

mysql> grant 'read_role' to 'read_usr1','read_usr2';

mysql> select *from mysql.role_edges;

+-----------+-----------+---------+-----------+-------------------+

| FROM_HOST | FROM_USER | TO_HOST | TO_USER | WITH_ADMIN_OPTION |

+-----------+-----------+---------+-----------+-------------------+

| % | read_role | % | read_usr1 | N |

| % | read_role | % | read_usr2 | N |

+-----------+-----------+---------+-----------+-------------------+

mysql> show grants for 'read_usr1' using 'read_role';

+--------------------------------------------------+

| Grants for read_usr1@% |

+--------------------------------------------------+

| GRANT USAGE ON *.* TO `read_usr1`@`%` |

| GRANT SELECT ON `db_kenyon`.* TO `read_usr1`@`%` |

| GRANT `read_role`@`%` TO `read_usr1`@`%` |

+--------------------------------------------------+

4、 测试登录,需要设置默认角色,否则会报错

[root@ ~]# mysql -uread_usr1 db_kenyon -p

Enter password:

ERROR 1044 (42000): Access denied for user 'read_usr1'@'%' to database 'db_kenyon'

--设置默认角色,返回管理员窗口

mysql> set default role 'read_role' to 'read_usr1';

mysql> select * from mysql.default_roles;

+------+-----------+-------------------+-------------------+

| HOST | USER | DEFAULT_ROLE_HOST | DEFAULT_ROLE_USER |

+------+-----------+-------------------+-------------------+

| % | read_usr1 | % | read_role |

+------+-----------+-------------------+-------------------+

mysql> \q

Bye

[root@ ~]# mysql -uread_usr1 -pEric@2020

mysql> select current_role();

+-----------------+

| current_role() |

+-----------------+

| `read_role`@`%` |

+-----------------+

5、回收权限

mysql> revoke select on db_kenyon.* from 'read_role';

--用户对应的权限相应被回收

mysql> show grants for 'read_usr1';

+------------------------------------------+

| Grants for read_usr1@% |

+------------------------------------------+

| GRANT USAGE ON *.* TO `read_usr1`@`%` |

| GRANT `read_role`@`%` TO `read_usr1`@`%` |

+------------------------------------------+

6、删除角色

mysql> drop role 'read_role'@'%';

二、总结:

1、新增角色模块可以简化并统一管理有相同权限的用户,方便管理人员维护

2、mysql库里新增了两张系统表defalut_role与role_edges用来查看和管理角色属性,前者是系统中默认的角色,后者是用户与角色的配置关系,角色表存放在user表中和用户信息混用

3、新增函数current_role()来查看当前用户的角色属性,相比较oracle略繁琐

4、和普通用户不同,新增的角色默认是无密码的,账户是锁定(account locked)的

5、mysql8版本的很多功能越来越趋向oracle,新增角色也是之一

mysql创建角色集_mysql8之新增角色相关推荐

  1. Mysql Cluster集群实现高可用

    MySQL集群搭建实现高可用 本节所讲内容: l MySQL 集群 概述 l 实战:MySQL 集群 搭建 1  MySQL集群概述和安装环境 MySQL Cluster是MySQL适合于分布式计算环 ...

  2. 京东如何基于Vitess管理大型MySQL实例集群

    本文根据dbaplus社群第203期线上分享整理而成 讲师介绍 王云博 京东数据库高级研发工程师 2014年加入京东,一直致力于数据库运维自动化的发展: 2018年专注于京东弹性数据库研发.运维工作. ...

  3. Step By Step 搭建 MySql MHA 集群

    关于MHA    MHA(Master High Availability)是一款开源的mysql高可用程序,目前在mysql高可用方面是一个相对成熟的解决方案.MHA 搭建的前提是MySQL集群中已 ...

  4. mysql pxc集群介绍_PXC集群的概述及搭建

    PXC集群的概述及搭建 PXC集群的简介 Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法.PXC集群以节点组成(推荐至少3节点,便于故障恢复,后 ...

  5. 从零搭建MySQL数据库集群(三):搭建混合集群综合应用

    集群的讲解分为三篇 (一):主从复制集群.PXC集群 https://blog.csdn.net/weixin_43934607/article/details/102762570 (二):MyCat ...

  6. mysql副本集_mongodb分片+副本集总览

    由于51cto的编辑不太好用,这是有道上的文档http://note.youdao.com/noteshare?id=aedd53c99b4a97aebbe9af136104113a 在 MongoD ...

  7. mysql创建角色并授权给用户

    mysql创建角色并授权给用户 CREATE DATABASE testdb; 创建角色 -- 创建角色 CREATE ROLE 'admin'; -- 语法 CREATE ROLE [IF NOT ...

  8. mysql 数据库集群搭建:(四)pacemaker管理三台maxscale集群,搭建mariadb读写分离中间层集群...

    为什么80%的码农都做不了架构师?>>>    <mysql 数据库集群搭建:(一)VirtualBox中多台CentOS虚拟机间和windows主机间互通以及访问互联网设置& ...

  9. MySQL主从集群原理+实战

    目录如下 MySQL主从集群原理+实战 背景 随着公司业务的发展,对数据库的要求越来越高,以前的单机MySQL肯定是玩不转了,亟需升级成MySQL集群,这是一个公司在业务发展时不得不面临的问题 就单机 ...

最新文章

  1. AI正从“感知智能”走向“认知智能”
  2. VC代码的编写和调试---编写易于调试的VC代码
  3. wcf服务和寄主的关系
  4. Apache Kafka:大数据的实时处理时代
  5. cmd测试cuda安装_安装:anaconda+cuda+pytorch+pycharm
  6. python不满足条件重新输入_如果Python中不满足条件,则拒绝用户输入
  7. 更换锁定计算机图片,电脑锁屏图片怎么设置
  8. 数据结构笔记(十一)串
  9. 如何往linux上面上传东西
  10. php100视频教程下载(全集),下载地址链接(整理后包涵解压密码)
  11. 安国主控,U盘量产,起死回生
  12. IDEA2020版本下载、安装
  13. Cisco Packet Tracer中配置链路聚合
  14. 为什么逍遥子说,双11已成全球的社会大协同?
  15. 美国3D理发师可剪出球星脸发型
  16. Android系统打不开,安卓手机打不开pdf文件怎么解决?
  17. matlab中ode指令,在Matlab中使用ODE选择步长
  18. UI库——muse-ui
  19. java连接twitter登录,twitter应用程序只认证java android与twitter4j
  20. unity5.6.5适配Android P刘海屏,两侧去黑边

热门文章

  1. 手写KMeans(python)
  2. Java基础常见面试题(一)
  3. 将DP83848替换成LAN8720配置
  4. jitsi性能测试结果
  5. 2020深度学习配置列表
  6. Swif-UIButton
  7. Cascaded Human-Object Interaction Recognition论文阅读笔记
  8. python 无纸化办公系统_详情
  9. 【SQL】填充空值为最近的不为空的数据
  10. IOS 定位当前位置