数据库作业12:第四章:数据库安全性 课后作业

6、对下列两个关系模式:
学生(学号,姓名,年龄,性别,家庭住址,班级号)
班级(班级号,班级名,班主任,班长)
使用GRANT 语句完成下列授权功能:
Student(Sno,Sname,Sage,Ssex,Saddress,Cno)
Class(Cno,c]Cname,Ctea,Cmon)

(1)授予用户U1对两个表的所有权限,并可给其他用户授权。

/*标准SQL*/
GRANT ALL PRIVILEGES
ON TABLE Student,Class
TO U1
WITH GRANT OPTION
/*T-SQL*/
GRANT ALL
ON Student
TO U1
WITH GRANT OPTION
GRANT ALL
ON Class
TO U1
WITH GRANT OPTION;

(2)授予用户U2对学生表具有查看权限,对家庭住址具有更新权限。

/*标准SQL,T-SQL去掉ON后面的TABLE即可*/
GRANT SELECT,UPDATE(Saddress)
ON TABLE Student
TO U2;

(3)将对班级表查看权限授予所有用户。

/*标准SQL,T-SQL去掉ON后面的TABLE即可*/
GRANT SELECT
ON TABLE Class
TO PUBLIC;

(4)将对学生表的查询、更新权限授予角色R1。

/*建立角色R1*/
CREATE ROLE R1;
/*给角色授予权限*/
GRANT SELECT,UPDATE
ON TABLE Student
TO R1;

(5)将角色R1授予用户U1,并且 U1可继续授予给其他角色。

/*标准SQL*/
GRANT R1
TO U1
WITH ADMIN OPTION;
/*T-SQL*/
ALTER ROLE R1
ADD MEMBER U1;

7、今有以下两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
Employee(Eno,Ename,Eage,Eduty,Esal,Dno)
Department(Dno,Dname,Manname,Dadd,Dtel)
请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
(1)用户王明对两个表有SELECT 权限。

/*标准SQL*/
GRANT SELECT 
ON TABLE Employee,Department
TO 王明;
/*T-SQL*/
GRANT SELECT 
ON Employee
TO 王明
GRANT SELECT
ON Department
TO 王明;

(2)用户李勇对两个表有INSERT和DELETE 权限

/*标准SQL*/
GRANT DELETE,INSERT
ON TABLE Employee,Department
TO 李勇
/*T-SQL*/
GRANT DELETE,SELECT
ON Employee
TO 李勇
GRANT DELETE,SELECT
ON Department
TO 李勇

(3)每个职工只对自己的记录有SELECT 权限。
我的答案错误,这样就成了所有人都可以查到了。

/*建立视图,按照职工号分组*/
CREATE VIEW Emp
AS
SELECT *
FROM Employee
GROUP BY Eno;
/*给视图授予权限*/
GRANT SELECT
ON VIEW Emp
TO PUBLIC;
/*正确答案*/
GRANT SELECT 
ON Employee
WHER USER()=NAME
TO ALL;

(4)用户刘星对职工表有SELECT 权限,对工资字段具有更新权限。

GRANT SELECT,UPDATE(Esal)
ON TABLE Employee
TO 刘星;

(5)用户张新具有修改这两个表的结构的权限。

GRANT ALTER
ON TABLE Employee,Department
TO 张新;

(6)用户周平具有对两个表的所有权限(读,插,改,删数据),并具有给其他用户授权的权限。

GRANT ALL PRIVILEGES
ON TABLE Employee,Department
TO 周平
WITH GRANT OPTION;

(7)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。

/*建立视图*/
CREATE VIEW ED(Dno,maxsal,minsal,avgsal)
AS 
SELECT Department.Dno,MAX(Esal),MIN(Esal),AVG(Esal)
FROM Employee,Department
GROUP BY Dno
HAVING Employee.Dno=Department.Dno 
/*授予权限*/
GRANT SELECT 
ON VIEW ED
TO 杨兰;

8、针对习题7中(1)-(7)的每一种情况,撤销个用户所授予的权限。
(1)

REVOKE SELECT
ON  TABLE Employee,Department
FROM 王明;

(2)

REVOKE INSERT,UPDATE
TO TABLE Employee,Department
FROM 李勇;

(3)

REVOKE SELECT 
ON VIEW Emp
FROM PUBLIC;
/*正确答案*/
REVOKE SELECT 
ON TABLE Employee
WHEN USER()=NAME
FROM ALL;

(4)

REVOKE SELECT,UPDATE(Esal)
ON TABLE Employee
FROM 刘星;

(5)

REVOKE ALTER
ON TABLE Employee,Department
FROM 张新;

(6)

REVOKE ALL PRIVILEGES
ON TABLE Employee,Department
FROM 周平 ;

(7)

REVOKE SELECT
ON VIEW ED
FROM 杨兰;
/*删除视图*/
DROP VIEW ED;

我忘记了删除视图.

总结:这次的作业相对比较简单,我的答案大部分都是正确的,但是关于只能查询到个人记录的那道题,我自己写的好像不太对,参考了答案.对于WHEN USER()=NAME不太懂.

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值