一 实验目的
熟悉通过SQL对数据进行安全性控制实验工具利用及其实验内容和要求
使用SQL对数据进行安全性控制,包括:授权和权力回收。操作完成后看看已授权的用户是否真正具有授予的数据操作的权力了权力收回操作之后的用户是否确实丧失了收回的数据操作的权力根据以要求认真填写实验报告记录所有的实验用例的和语句(加上视图机制)完成以下授权定义或存取控制功能create database work
go
use work
--创建以下两个关系模式,并分别插入相应的数据。
--Worker(职工号,姓名,年龄,职务,工资,部门号)
go
create table Worker(
职工号 varchar(10),
姓名 char(10),
年龄 int,
职务 char(15),
工资 int,
部门号 char(50)
)
--Section(部门号,名称,经理名,地址,电话号码)
create table Section (
职工号 char(10),
名称 char(10),
经理名 char(10),
地址 char(50),
电话 char(15)
);
go
--插入部门信息
insert into Section values('a001','市场部门','李永','白理工',);
insert into Section values('a002','营销部门','李刚','白理工',);
--插入职工信息
insert into Worker values('a001001','王明',20,'市场营销员',2000,'a001');
insert into Worker values('a001002','李村',29,'市场营销员',2000,'a001');
insert into Worker values('a001003','李永',20,'经理',5000,'a001');
insert into Worker values('a002001','罗杰',18,'销售员',2000,'a002');
insert into Worker values('a002002','李红',24,'销售员',2000,'a002');
insert into Worker values('a002003','李刚',32,'经理',5000,'a002');
--查询部门表和职工表的数据
select *from Worker;
select *from Section;
go
--授权
use work
go
--(a)用户王明对两个表有select权力;
create login [王明] with password=N'1234';
create user [王明] for login [王明];
grant select on Worker to [王明];
grant select on Section to [王明];
--插入数据权限测试
insert into Worker values('a002004','罗红',28,'销售助理',4000,'a002');
--查询数据权限测试
select *from Worker;
--(b)用户李勇对两个表有insert和delete权力;
use work
go
create login [李勇] with password=N'1234';
create user [李勇] for login [李勇];
grant insert,delete on Worker to [李勇];
grant insert,delete on Section to [李勇];
--插入数据权限测试
insert into Worker values('a002005','罗莉',52,'销售助理',4000,'a002');
--查询数据权限测试
select *from Worker;
--删除权限测试
delete Worker from where 职工号='a002001';
--(c)每个职工只对自己的记录有select权力;
use work
go
create view Myself as select * from Worker
where 姓名=user;
grant select on Myself to public;
--(d)用户刘星对职工表有select权力,对工资字段具有更新权力;
use work
go
create login [刘星] with password=N'1234';
create user [刘星] for login [刘星];
grant select,up