第 8 章 · 第四节 · 课件第 42 页
角色与用户的关系
角色是一组权限的集合,把角色分配给用户,用户就得到这些权限。

试一试逐个授权与使用角色,要写几条语句
新来的教师
| 做法 | 建好用户后要写的语句 | 以后增加一项权限 |
|---|
重 点
一个用户可以有多个角色,一个角色也可以分配给多个用户。MySQL 8.0 开始支持角色。
角色是一组权限的集合,把角色分配给用户,用户就得到这些权限。

| 做法 | 建好用户后要写的语句 | 以后增加一项权限 |
|---|
一个用户可以有多个角色,一个角色也可以分配给多个用户。MySQL 8.0 开始支持角色。
创建角色、给角色授权、分配给用户、激活、撤销。

激活这一步最容易漏掉。角色分配后不激活,用户仍然没有这些权限。
CREATE ROLE 创建角色,再用 GRANT 把权限授予角色。
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';
写法和给用户授权相同
先把角色分配给用户,再激活角色。

| 写法 | 有效范围 |
|---|---|
| SET ROLE | 当前这一次连接 |
| SET DEFAULT ROLE | 以后每次登录 |
只写 teacher2 时指 teacher2@%,实验中用 teacher2@localhost。
查看已激活的角色,撤销用户的角色,删除角色。
| 操作 | 写法 |
|---|---|
| 查看当前激活的角色 | 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';