3.7.4 权限控制
本课核心知识点整理
权限控制考什么
权限控制属于 SQL 的数据控制语言。字幕里说明这一块在软件设计师中考得不多,主要记关键字和语句结构:GRANT 授权,REVOKE 回收权限,WITH GRANT OPTION 表示级联授权能力。
数据库权限控制的目的,是让用户只能在被授权的对象上执行被允许的操作。例如某用户只能查询部门表,不能修改;或只能修改某一列。
授权语句 GRANT
基本形式:
sql
GRANT 权限列表
ON 对象
TO 用户列表
[WITH GRANT OPTION];例子:授予用户 U1 对部门表 DPT 中 name 列的更新权限,并允许继续授权:
sql
GRANT UPDATE(name)
ON DPT
TO U1
WITH GRANT OPTION;| 片段 | 含义 |
|---|---|
GRANT | 授予权限 |
UPDATE(name) | 授予对 name 列的修改权限 |
ON DPT | 权限作用对象是 DPT 表 |
TO U1 | 被授权用户是 U1 |
WITH GRANT OPTION | U1 可以继续把该权限授给别人 |
权限对象可以是表、视图,也可能细到列。考试通常给出自然语言描述,让你选择正确关键字组合。
回收权限 REVOKE
基本形式:
sql
REVOKE 权限列表
ON 对象
FROM 用户列表;与授权语句的区别是:授权用 TO,回收用 FROM。
sql
REVOKE UPDATE(name)
ON DPT
FROM U1;字幕还提到 CASCADE:如果权限曾经通过 WITH GRANT OPTION 继续传递给其他用户,级联回收会把被回收者再授权出去的权限一并回收。
sql
REVOKE UPDATE(name)
ON DPT
FROM U1
CASCADE;易混关键字
| 关键字 | 所属场景 | 含义 |
|---|---|---|
GRANT | 授权 | 给予权限 |
REVOKE | 回收 | 收回权限 |
TO | 授权 | 指定被授权用户 |
FROM | 回收 | 指定被回收用户 |
WITH GRANT OPTION | 授权扩散 | 允许被授权者继续授权 |
CASCADE | 级联回收 | 连同下游授权一并回收 |
WITH CHECK OPTION | 视图更新约束 | 不是授权级联 |
字幕中特别提醒,WITH CHECK OPTION 与视图相关,不是权限授权语句;看到“允许继续授权”时,应选 WITH GRANT OPTION。
做题路线
- 先判断是授权还是回收:授予用
GRANT,收回用REVOKE。 - 看权限类型:
SELECT、INSERT、UPDATE、DELETE,列级更新可写UPDATE(列名)。 - 看对象:用
ON 表名/视图名。 - 看用户:授权用
TO 用户,回收用FROM 用户。 - 看到“允许继续授权”,补
WITH GRANT OPTION;看到“级联回收”,考虑CASCADE。
例题
授予用户某表查询权限,应使用:
允许被授权用户继续把权限授给其他用户,应使用:
自查要点
- GRANT 和 REVOKE 分别做什么?
- WITH GRANT OPTION 的含义是什么?
- 授权语句中 ON 和 TO 分别指定什么?