数据库原理与应用 第 8 章 · 第四节
课程 › 第 8 章 › 第四节 角色生命周期创建与授权分配与激活查看与撤销 版式
第 8 章 数据库安全性管理 · 第四节

角色管理

角色的概念和生命周期,创建角色、授权、分配、激活和撤销
本 节 知 识 点
  1. 19角色与用户的关系
  2. 20角色的生命周期
  3. 21创建角色和给角色授权
  4. 22分配角色和激活角色
  5. 23查看角色和撤销角色
19
第 8 章 · 第四节 · 课件第 42 页

角色与用户的关系

角色是一组权限的集合,把角色分配给用户,用户就得到这些权限。

课件第 42 页

试一试逐个授权与使用角色,要写几条语句

新来的教师
做法建好用户后要写的语句以后增加一项权限

重 点

一个用户可以有多个角色,一个角色也可以分配给多个用户。MySQL 8.0 开始支持角色。

20
第 8 章 · 第四节 · 课件第 43 页

角色的生命周期

创建角色、给角色授权、分配给用户、激活、撤销。

课件第 43 页

试一试角色的五个步骤

依次点击
    teacher2 登录后执行 SELECT * FROM teaching.sc

    重 点

    激活这一步最容易漏掉。角色分配后不激活,用户仍然没有这些权限。

    21
    第 8 章 · 第四节 · 课件第 44、45 页合并重做

    创建角色和给角色授权

    CREATE ROLE 创建角色,再用 GRANT 把权限授予角色。

    8.5 MySQL 角色管理课件第 44、45 页合并

    创建角色和给角色授权

    创建角色
    CREATE ROLE '角色名'@'主机' [, …];
    CREATE ROLE 'teacher', 'administrator';
    CREATE ROLE 'developer'@'localhost';

    省略 @主机 时为 %,teacher 的全名是 teacher@%

    给角色授权
    GRANT ALL PRIVILEGES ON *.*
    TO 'administrator';
    
    GRANT SELECT, INSERT, UPDATE, DELETE
    ON teaching.sc TO 'teacher';

    写法和给用户授权相同

    • 角色也存放在 mysql.user 中,account_locked 为 Y,不能用来登录
    • SHOW GRANTS FOR 角色名 可以查看角色的权限
    22
    第 8 章 · 第四节 · 课件第 46 页

    分配角色和激活角色

    先把角色分配给用户,再激活角色。

    课件第 46 页

    分清楚

    写法有效范围
    SET ROLE当前这一次连接
    SET DEFAULT ROLE以后每次登录

    知道更多

    只写 teacher2 时指 teacher2@%,实验中用 teacher2@localhost。

    实 验

    实验 3-3 把角色分配给用户

    实 验

    实验 3-4 激活角色

    23
    第 8 章 · 第四节 · 课件第 47 页重做

    查看角色和撤销角色

    查看已激活的角色,撤销用户的角色,删除角色。

    8.5 MySQL 角色管理课件第 47 页重做

    查看角色和撤销角色

    操作写法
    查看当前激活的角色SELECT CURRENT_ROLE();
    查看用户从角色得到的权限SHOW GRANTS FOR 用户 USING 角色;
    撤销用户的角色REVOKE 角色 FROM 用户;
    删除角色DROP ROLE 角色;
    例
    SHOW GRANTS FOR 'teacher2'@'localhost'
        USING 'teacher';
    REVOKE 'teacher' FROM 'teacher2'@'localhost';
    DROP ROLE 'teacher';
    • CURRENT_ROLE() 返回 NONE,表示当前连接中没有激活的角色
    • REVOKE 后面写角色名,FROM 后面写用户
    • 删除角色后,分配过这个角色的用户也就失去了它的权限
    保山学院·人工智能教研室·曹鼎鼎