6
答:
自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
4.2.4 授权与回收
grant语句想用户授予权限。revoke语句收回授予的权限。
一、grant
一般格式如下:
grant <权限>,...
on <对象类型>,...
to <用户>,...
[with grant option];
其语义为:将对指定操作对象的指定操作权限授予指定的用户。with grant option 传播权限。
例1:把查询Student表的权限授予用户U1。
1
|
grant
select
on
table Student
to U1;
|
例2:把对Student表和Course表的全部操作权限授予用户U2,U3
1
|
grant
all
privileges
on
table Student,Course
to U2,U3;
|
例子4:把查询Student表和修改学生学号的权限授予用户U4。
1
|
grant
update(Sno),
select
on
table Student
to U4;
|
二、revoke
授予的权限可以有DBA或者其他授权者用revoke语句收回,revoke语句的一般格式为
revoke <权限>,...
on <对象类型>,...
from <用户>,...
[cascade|restrict];
//级联、拒绝。
例8: 把用户U4修改学生学号的权限收回
1
|
revoke
update(Sno)
on
table Student
from U4;
|
例10 把用户U5对SC表的insert权限收回。
1
|
revoke
insert
on
table SC
from U5
cascade;
|
二、创建数据库模式的权限。
grant和revoke语句向用户授予或者收回对数据的操作权限。对数据库模式的授权则由DBA在创建用户时实现。
create user语句一般格式如下:
create user <username>
[with] [DBA|resource|connect];
只有系统超级用户才有权创建一个新的数据库用户。
4.2.5 数据库角色
为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。
一、角色创建
create role <角色名>;
二、角色授权
grant <权限>,...
on <对象类型>,...
to <角色>,...
三、将一个角色授予其他的角色或者用户。
grant <角色1>,...
to <角色3>,...
[with admin option];
四、角色权限收回。
revoke <权限>,...
on <对象类型> <对象名>
from <角色>,...
用户可以回收角色的权限,从而修改角色拥有的权限。
下面是一个例子。
1
2 3 4 5 6 7 |
create role r1;
grant select, update, insert on table Student to r1; grant r1 to 王平,张明,赵玲; revoke r1 from 王平; |