【数据库】作业11——SQL练习7 - GRANT/ REVOKE / AUDIT


  • 【例4.1】~【例4.13】
  • 【例4.14】~【例4.16】可以下周讲完了再做,也可以提前预习、提前做。

1. 在SQLserver上运行,观察运行效果,并把代码写到作业中。

2. 写出自己的理解/收获/心得体会(部分比较复杂的例题,建议增加测试方法和测试数据,举一反三)。

 

作业原地址:作业

目录

4.2.4授权:授权与收回

1.GRANT

2.REVOKE

3.创建数据库模式的权限

4.2.5数据库角色

1.创建角色

2.给角色授权

3.讲一个角色授予其他的角色或用户

4.角色权限的收回

4.2.6强制存取控制方法

4.3视图机制

4.4审计

总结

 



 

4.2.4授权:授权与收回

 

1.GRANT

 

GRANT语句的一般格式:

 

GRANT <权限>[,<权限>]... 
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];  

 

注:如果指定了WITH GRANT OPTION 子句,则获得某种权限的用户还有把这种权限再授予其他用户。若没有指定WITH GRANT OPTION 子句,则获得某种权限的用户只能使用该权限,不能传播该权限。

 

【例4.1】把查询Student表的权限授给用户U1。

 

GRANT SELECT 
ON TABLE Student 
TO U1;
/*!!!错误!!!*/

 

这里了出现了错误。

 

插眼

 

百度了一下,没有找到具体原因,但是找到了改正方法,去掉TABLE就可以了。

 

GRANT SELECT 
ON Student 
TO U1;

 

【例4.2】把对Student表和Course表的全部操作权限授予用户U2和U3。

 

GRANT ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;

 

既然上例加TABLE有报错,果然这个也有了报错。

 

【例4.3】把对表SC的查询权限授予所有用户。

 

GRANT SELECT 
ON TABLE SC 
TO PUBLIC;

 

【例4.4】把查询Student表和修改学生学号的权限授给用户U4。

 

GRANT UPDATE(Sno),SELECT 
ON TABLE Student
TO U4;

 

【例4.5】把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户。

 

GRANT INSERT 
ON TABLE SC 
TO U5
WITH GRANT OPTION;

 

【例4.6】U5将对表SC的INSERT权限授予U6。

 

GRANT INSERT 
ON TABLE SC 
TO U6
WITH GRANT OPTION;

 

【例4.7】将上例权限授予U7。

 

GRANT INSERT 
ON TABLE SC 
TO U7;

 

注:因为U6未给U7传播的权限,因此U7不能再传播此权限。

 


 

2.REVOKE

 

授权用户的权限可以由数据库管理员或其他授权者用REVOKE语句收回,其一般格式:

 

REVOKE <权限>[,<权限>]... 
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];

 

【例4.8】把用户U4修改学生学号的权限收回。

 

REVOKE UPDATE(Sno)
ON TABLE Student 
FROM U4;

 

【例4.9】收回所有用户对表SC的查询权限。

 

REVOKE SELECT 
ON TABLE SC 
FROM PUBLIC;

 

【例4.10】把用户U5对SC表的INSERT权限收回。

 

REVOKE INSERT 
ON TABLE SC 
FROM U5 CASCADE;

 

注:将用户U5的INSERT权限收回的同时,级联收回了U6和U7的INSERT权限,否则系统将拒绝执行该命令。

    这里的默认值为CASCADE。

 


 

3.创建数据库模式的权限

 


 

4.2.5数据库角色

 

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。

 

1.创建角色

 

CREATE  ROLE  <角色名 

 

2.给角色授权

 

 GRANT  <权限>[,<权限>]… 
 ON <对象类型>对象名  
 TO <角色>[,<角色>]…

 

3.讲一个角色授予其他的角色或用户

 

GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]… 
[WITH ADMIN OPTION]

 

该语句把角色授予某个用户,或授予另一个角色。一个角色所拥有的权限就是授予它的全部角色所包含的权限的总和。

授予者或者是角色的创建者,或者拥有在这个角色上的ADMIN OPTION。

如果指定了WITH ADMIN OPTION 子句,则获得某种权限的角色或用户还可以把这种权限再授予其他角色。

 

4.角色权限的收回

 

REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…

 

用户可以回收角色的权限,从而修改角色拥有的权限。

 

【例4.11】通过角色来实现将一组权限授予一个用户。

 

①首先创建一个角色R1。

CREATE ROLE R1;

 

②然后使用GRANT语句,使角色R1拥有Student表的 SELECT、UPDATE、INSERT权限。

GRANT SELECT,UPDATE,INSERT 
ON TABLE Student 
TO R1;

 

③将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限。

GRANT R1 
TO 王平,张明,赵玲;

 

④也可以一次性通过R1来回收王平的这三个权限。

REVOKE R1 
FROM 王平;

 

【例4.12】角色的权限修改。

 

GRANT DELETE 
ON TABLE Student
TO R1;

 

【例4.13】使R1减少了SELECT权限

 

REVOKE SELECT 
ON TABLE Student
FROM R1;

 


 

4.2.6强制存取控制方法

 

在强制存取控制中,数据库管理系统所管理的全部实体被分为主体和客体两大类。

主体:是系统中的活动实体。

客体:是系统中的被动实体。

 

系统存取规则:

(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。

(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。

 

4.3视图机制

 

可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内。

视图机制间接地实现支持存取谓词的用户权限定义。

 

【例4.14】建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明。

 

CREATE VIEW CS_Student        /*先建立视图SC_Student*/
AS
SELECT *
FROM Student
WHERE Sdept='CS';

GRANT SELECT                  /*王平老师只能检索计算机系学生的信息*/
ON CS_Student
TO 王平;
     
GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;

 


 

4.4审计

 

审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。

审计员可以利用审计日志监控数据库中的各种行为,重视导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

 

【例4.15】对修改SC表结构或修改SC表数据的操作进行审计。

 

AUDIT ALTER,UPDATE  
ON SC;

 

【例4.16】取消对SC表的一切审计。

 

NOAUDIT ALTER,UPDATE  
ON SC;

 


总结

 

没什么大难度,就是最开始报的那个错,一直没有搞清楚,好像这些代码加了TABLE都会报错,貌似不加是正确的。

都挺好理解的,格式记住了应该就没什么问题了。

 


插眼传送:

 

完成时间:1h19min

          以上

                                         ————(2020.4.5)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值