一句话建三个角色
角色是一个建好就锁住的账号。
重 点
account_locked 一栏是 Y,这就是角色登不了录的原因。
知道更多
不写 @主机 默认是 %,所以 teacher 的全名是 `teacher`@`%`。
角色是一个建好就锁住的账号。
account_locked 一栏是 Y,这就是角色登不了录的原因。
不写 @主机 默认是 %,所以 teacher 的全名是 `teacher`@`%`。
报 3118,账号被锁。
角色只是权限的一个包,从设计上就不是给人登录用的。
角色和用户在 MySQL 里本来就是同一张表里的行,解锁就成了用户。
语法和给用户授权完全一样。
administrator 那行打出来是 ALL PRIVILEGES,全给齐了才这样显示。
课件第 45 页把 PRIVILEGES 拼成了 PREVILEGE,照抄会报语法错。
绑上了,可 CURRENT_ROLE 还是 NONE。
USE 报 1044。分配只是把线接上,开关还没合。
这时候 SHOW GRANTS 看得到角色那一行吗?
合上开关,权限立刻就来了。
退出去再登进来,CURRENT_ROLE 又变回 NONE,说明它只管一个会话。
SET ROLE ALL 一次把这个用户名下所有角色全部激活。
这一句才是管理员该写的那一句。
SET DEFAULT ROLE ALL 是把这个用户名下所有角色都设成默认激活。
| 写法 | 管多久 |
|---|---|
| SET ROLE | 这一个会话 |
| SET DEFAULT | 以后每次登录 |
role_edges 记谁给了谁,default_roles 记谁默认激活。
加了 USING 才把角色带来的那几行也一起摊开给你看。
不加 USING 时只看得到一行 GRANT `teacher`@`%` TO `teacher2`@`%`。
REVOKE 收的是角色,不是用户。
第一句报 3530,把两边写反了机器就认不出这层关系。
课件第 47 页印的是 REVOKE 'teacher2' FROM 'teacher',前后颠倒了。
建角色、授权、分配、激活,一句改动三个人同时变。
最后一句 GRANT 只写了一遍,p1 和 p2 同时多了一项 DELETE。
人越多这个差距越大,这就是角色存在的全部理由。