数据库安全性
授权与回收
GRANT
GRANT <权限>[,<权限>]...
[ON <对象类型> <对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
![](https://img-blog.csdnimg.cn/180ea3c2bea24e9cb09c994ac99fee91.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAZ3JlYXTor7bmm7I=,size_12,color_FFFFFF,t_70,g_se,x_16)
例如
把查询Student表权限授给用户U1
GRANT SELECT
ON TABLE Student
TO U1;
例如
把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILIGES
ON TABLE Student, Course
TO U2, U3;
例如
把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC;
例如
把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno), SELECT
ON TABLE Student
TO U4;
对属性列的授权时必须明确指出相应属性列名
例如
把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;
执行例5后,U5不仅拥有了对表SC的INSERT权限,
还可以传播此权限:
例如
GRANT INSERT ON TABLE SC TO U6
WITH GRANT OPTION;
同样,U6还可以将此权限授予U7:
例如
GRANT INSERT ON TABLE SC TO U7;
但U7不能再传播此权限。
下表是执行了[例1]到[例7]的语句后,学生-课程数据库中的用户权限定义表
授权用户名 | 被授权用户名 | 数据库对象名 | 允许的操作类型 | 能否转授权 |
DBA | U1 | 关系Student | SELECT | 不能 |
DBA | U2 | 关系Student | ALL | 不能 |
DBA | U2 | 关系Course | ALL | 不能 |
DBA | U3 | 关系Student | ALL | 不能 |
DBA | U3 | 关系Course | ALL | 不能 |
DBA | PUBLIC | 关系SC | SELECT | 不能 |
DBA | U4 | 关系Student | SELECT | 不能 |
DBA | U4 | 属性列Student.Sno | UPDATE | 不能 |
DBA | U5 | 关系SC | INSERT | 能 |
U5 | U6 | 关系SC | INSERT | 能 |
U6 | U7 | 关系SC | INSERT | 不能 |
REVOKE <权限>[,<权限>]...
[ON <对象类型> <对象名>]
FROM <用户>[,<用户>]...;
例如
把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;
例如
收回所有用户对表SC的查询权限
REVOKE SELECT
ON TABLE SC
FROM PUBLIC;
例如
把用户U5对SC表的INSERT权限收回
REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE ;
执行[例8]到[例10]的语句后,学生-课程数据库中的用户权限定义表
授权用户名 | 被授权用户名 | 数据库对象名 | 允许的操作类型 | 能否转授权 |
DBA | U1 | 关系Student | SELECT | 不能 |
DBA | U2 | 关系Student | ALL | 不能 |
DBA | U2 | 关系Course | ALL | 不能 |
DBA | U3 | 关系Student | ALL | 不能 |
DBA | U3 | 关系Course | ALL | 不能 |
DBA | U4 | 关系Student | SELECT | 不能 |
创建数据库模式的权限
CREATE USER <username>
[WITH][DBA | RESOURCE | CONNECT]
拥有的权限 | 可否执行的操作 | |||
CREATE USER | CREATE SCHEMA | CREATE TABLE | 登录数据库 执行数据查询和操纵 | |
DBA | 可以 | 可以 | 可以 | 可以 |
RESOURCE | 不可以 | 不可以 | 不可以 | 不可以 |
CONNECT | 不可以 | 不可以 | 不可以 | 可以,但必须拥有相应权限 |