数据库安全性的几个习题

文章目录

  • 数据库安全性习题
      • 1、对下列两个关系模式使用GRANT语句完成下列授权
          • (1) 授予用户U1对两个表的所有权限,并可给其他用户授权
          • (2) 授予用户U2对学生表具有查看权限,对家庭住址具有更新权限
          • (3) 将对班级表查看权限授予所有用户
          • (4) 将对学生表的查询、更新权限授予角色R1
          • (5) 将角色R授予用户U1,并且U1可继续授予给其他角色
      • 2、今有一下两个关系模式:
          • (1) 用户王明对两个表有SELECT权限
          • (2) 用户李勇对两个表有INSERT 和DELETE权限
          • (3) 每个职工只对自己的记录有SELECT权限
          • (4) 用户刘星对职工表有SELECT权限,对工资字段具有更新权限
          • (5) 用户张新具有修改这两个表的结构的权限
          • (6) 用户周平具有对两个表的所有权限(读、差、改、删数据),并具有给其他用户授权的权限
          • (7) 用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资
      • 3、针对习题2中(1)~(7)的每一种情况,撤销各用户所授予的权限

数据库安全性习题

本篇文章记录了第十二次作业
使用的数据库是SQL Server,使用的数据库管理软件是SQL Server Management Studio.

当然这里是写作业用的全部都是标准SQL。


1、对下列两个关系模式使用GRANT语句完成下列授权

 学生(学号,姓名,年龄,性别,家庭住址,班级号)
 班级(班级号,班级名,班主任,班长)

(1) 授予用户U1对两个表的所有权限,并可给其他用户授权
	GRANTALLPRIVILEGESON Student,Class   
	TO U1 
	WITHGRANTOPTION;
(2) 授予用户U2对学生表具有查看权限,对家庭住址具有更新权限
	GRANT SELECT,UPDATE(Adress)
	ON Student 
	TO U2;
(3) 将对班级表查看权限授予所有用户
	GRANT SELECT 
	ON Class
	TO PUBLIC;
(4) 将对学生表的查询、更新权限授予角色R1
	GRANT SELECT,UPDATE
	ON Student
	TO R1;
(5) 将角色R授予用户U1,并且U1可继续授予给其他角色
	GRANT R1
	TO U1
	WITH ADMIN OPTION;

2、今有一下两个关系模式:

 职工(职工号,姓名,年龄,职务,工资,部门号)
 部门(部门号,名称,经理名,地址,电话号)
请使用SQL的GRANT和REVOKE语句(加上视图机制)完成一下授权定义或存取控制功能:

(1) 用户王明对两个表有SELECT权限
	GRANT SELECT
	ON Employee,Department
	TO WangMing;
(2) 用户李勇对两个表有INSERT 和DELETE权限
	GRANT INSERT,DELETE
	ON Employee,Department
	TO LiYong;
(3) 每个职工只对自己的记录有SELECT权限
	GRANT SELECT
	ON Employee
	WHEN USER()=Ename
	TO ALL;	/*这里不是很懂,网上搜的*/

 这里我本来想建立一个视图就是让用户名和职工名相同的人才能查看到该条记录,但是怎么让用户名能够参与进这个比较中,我不太懂。

(4) 用户刘星对职工表有SELECT权限,对工资字段具有更新权限
	GRANT SELECT,UPDATE(Salary)
	ON Employee
	TO LiuXing;
(5) 用户张新具有修改这两个表的结构的权限
	GRANT ALTER TABLE
	ON Employee,Department
	TO ZhangXin;
(6) 用户周平具有对两个表的所有权限(读、差、改、删数据),并具有给其他用户授权的权限
	GRANT ALL PRIVILEGES
	ON Employee,Department
	TO ZhouPing
	WITH GRANT OPTION;
(7) 用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资
	CREATE VIEW Dsalary AS
		SELECT Dname,MAX(Salary),MIN(Salary),AVG(Salary)
		FROM Employee,Department
		WHERE Department.dno=Employee.dno
		GROUP BY Employee.dno
	GRANT SELECT ON Dsalary
	TO YangLan;

3、针对习题2中(1)~(7)的每一种情况,撤销各用户所授予的权限

 大部分只要把GRANT改成REVOKE,TO改成FROM就行了

//1
REVOKE SELECT
ON Employee,Department
FROM WangMing;
//2
REVOKE INSERT,DELETE
ON Employee,Department
FROM LiYong;
//3
GRANT SELECT
ON Employee
WHEN USER()=Ename
TO ALL;
//4
REVOKE SELECT,UPDATE(Salary)
ON Employee
FROM LiuXing;
//5
REVOKE ALTER TABLE
ON Employee,Department
FROM ZhangXin;
//6
REVOKE ALL PRIVILEGES
ON Employee,Department
FROM ZhouPing;
//7
REVOKE SELECT
ON Dsalary
FROM YangLan;
DROP VIEW Dsalary;

 
参考文献:
[1]萨师煊,王珊,数据库系统概论.5版.北京:高等教育出版社,2014.

你可能感兴趣的:(数据库安全性的几个习题)