数据库安全性控制的常用方法:
用户标识和鉴定
存取控制:自主存取控制和强制存储控制
(定义用户权限,并将用户权限登记到数据字典中
分为自主存取控制和强制存取控制)
视图技术
审计技术
数据加密存储和加密传输
自主存取控制:grant和revoke
授权与收回
授权:定义存取权限
grant [select[列] | update[列] | insert[列] ] on table 表 to [用户|public] [with grant option]
revoke [同] on table 表 from [用户|public] [cascade]
把查询Student表权限授给用户U1
grant select
on table Student
to U1;
把对Studnet和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;
指定with grant option的用户可以把相应权限授予其他用户,但不允许循环授予。
收回用户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;
用户U5的insert权限收回的同时,级联(cascade)收回了U6和U7的insert权限,否则系统将拒绝执行该命令。
create view Notpass
as
select student.sno,sname,cname,grade
from student,sc,course
where student.
三表连接。
create bk_view
as
select
Student.Sno,Sname,count(*)
from Student,SC
where student.sno=score.sno and (Grade<60 or Grade is null)
group by SC.Sno;
缺考grade是null。
当列属性唯一时,前面不需要加列名。
(本题是期末考试原题)
grant select,insert
on table sc
to a1,a2
with grant option;
grant select
on table student
to public;
revoke insert on table sc
from a1 cascade;