第 8 章 · 第六节
人一多,一句句授权就受不了了
角色是把一串权限打成一个包再发出去。

重 点
MySQL 8 才有角色,8 以前只能一个个 GRANT。
打个比方
岗位定权限,人对岗位。换岗只换牌子,权限跟着牌子走。
角色是把一串权限打成一个包再发出去。

MySQL 8 才有角色,8 以前只能一个个 GRANT。
岗位定权限,人对岗位。换岗只换牌子,权限跟着牌子走。
角色装权限,用户领角色。

| 做法 | 建号之后还要敲几句 | 以后加一项权限 |
|---|
一个用户可以领好几个角色,一个角色也可以发给好多用户。
角色能不能再领角色?
第四步最容易漏,漏了前面三步全白做。

分配只是把线接上,激活才是把开关合上,两步缺一不可。
角色就是一个建好就锁住的账号。

把权限先装进角色这个口袋。

角色和用户在 MySQL 里本来就是同一张表里的行,所以语法通用。
课件把 PRIVILEGES 拼成了 PREVILEGE,照抄会报语法错。
SHOW GRANTS 能查角色吗?
GRANT 把角色给人,SET DEFAULT ROLE 让它生效。

| 写法 | 管到什么时候 |
|---|---|
| SET ROLE | 这一个会话 |
| SET DEFAULT | 以后每次登录 |
只 GRANT 不激活,用户登进去 CURRENT_ROLE 是 NONE,照样什么都查不了。
查看用函数,撤销用 REVOKE,删掉用 DROP ROLE。

REVOKE 收的是角色,写法是 REVOKE 角色 FROM 用户,别写反。
课件那句写成了 REVOKE 'teacher2' FROM 'teacher',两边颠倒了。
DROP ROLE 之后还用不用先 REVOKE?