1.实验题目:数据库的安全性
2.实验目的和要求:
- 掌握SQL Server 2008的安全控制机制
- 掌握SQL Server2008的身份验证模式
- 理解数据库用户帐户的基本概念
- 理解角色的概念
3.实验步骤:
- 按实验内容要求完成各项操作
- 根据题目要求给出解决方案
- 提交实验报告
4.实验内容:
--表的建立
Create table Student
(Sno char(9) PRIMARY KEY,
Sname char(20) UNIQUE,
Sex char(2),
Age SMALLINT,
Dept char(20)
);
Create table Course
(Cno char(4) PRIMARY KEY,
Cname char(40) NOT NULL,
Cpno char(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)
);
Create table SC
(Sno char(9),
Cno char(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno)REFERENCES Student(Sno),
FOREIGN KEY (Cno)REFERENCES Course(Cno)
);
--表中插入数据
Insert
Into Student
Values('42101','赵君君','男',18,'CS'),
('42102','赵小花','女',17,'MA'),
('42103','赵小明','男',17,'MA'),
('42104','赵宇宇','男',18,'CS'),
('42105','赵兰兰','女',17,'IS'),
('42106','钱小君','男',18,'CS'),
('42107','钱大花','女',17,'MA'),
('42108','钱君','男',18,'CS'),
('42109','钱花','女',17,'MA'),
('42110','钱明','男',17,'MA'),
('42111','孙宇','男',18,'CS'),
('42112','孙兰','女',17,'IS'),
('42113','江君','男',18,'CS'),
('42114','刘花','女',17,'MA');
Insert
Into Course
Values('1','CS','2',4),
('2','MA',null,2),
('3','IS','1',7);
Insert
Into SC
Values('42101','1',35),
('42102','2',99),
('42103','2',45),
('42104','1',95),
('42105','3',78),
('42106','1',75),
('42107','2',99),
('42108','1',43),
('42109','2',95),
('42110','2',73),
('42111','1',35),
('42112','3',59),
('42113','1',35),
('42114','2',96);
Select * from Student;
Select * from Course;
Select * from SC;
1.定义登录log1,log2,log3
Create login log1
with password = '12345678' ;
Create login log2
with password = '12345678' ;
Create login log3
with password = '12345678' ;
2.定义用户user1,user2,user3
Create user log1;
Create user log2;
Create user log3;
3.掌握SQL SERVER 2008架构和用户分离的概念
4.数据库的授权、授权语句
4.1.将查询SC表和修改GRADE属性的权限授予用户user1。
Grant select , update (GRADE)
ON SC
to log1;
4.2.将对表S的插入权限授予用户user2,并允许他将此权限授予其他用户。
Grant insert
ON Student
to log2;
4.3.允许用户user3拥有对cs系学生的查询权限
Grant select(Dept = 'CS')
ON Student
to log3;
4.4.创建角色R1,授予R1 课程表查询和插入的权限,并授予用户user3
Create role R1
Grant select , insert
ON Course
to R1;
Grant R1
to log3;
4.5.删除角色R1课程表的插入权限
Revoke insert
ON Course
from R1
4.6.收回所有用户对表S的插入权限。
Revoke insert
ON Student
from log1, log2, log3
5.实验总结
本次实验要掌握SQL Server 2008的安全控制机制,练习SQL Server2008的身份验证模式,理解数据库用户帐户的基本概念和角色的概念。主要反复使用grant 和revok语句。
6.思考题
1.请分析with grant option、with check option、with admin option有何联系和区别
答:如果指定了with grant option子句,则获得某种权限的用户还可以把这种权限在授予其他的用户。如果没有指定,则获得某种权限的用户只能使用该权限,不能传播该权限。
如果指定了with admin option子句,则获得这种权限的角色或用户还可以把这种权限在授予其他的角色。
with check option表示对视图进行update,insert,delete操作时要保证更新,插入或删除的行满足视图定义中的谓词条件。
2.根据实验内容分析角色在权限分配上有何优点。
答:一个角色包含的权限包括直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。