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

痛苦的领悟:这是第二遍写,第一遍从七点半写到了九点四十,马上就要写完的时候文章卡住空白了,按以前来说,一般刷新完都会有草稿,但是。。。我居然开始没写标题,所以草稿也就不存在,所以劝大家,写博客之前一定要先写上标题啊,还要不时地保存一下草稿。现在就是贼后悔…还有就是优快云的bug好明显啊,为什么一复制比较长的代码整篇文章就卡住了呢

授权

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

[4.1]把查询Student表权限授给用户U1

grant select
on student
to u1;

在这里插入图片描述
[4.2]把对Student表和Course表的全部权限授予用户U2和U3

需要说明的是sqlsever中不支持对多个table进行同时操作。

grant all privileges
on student
to u2,u3;
grant all privileges
on course
to u2,u3;

[4.3]把对表SC的查询权限授予所有用户

grant select
on sc
to public;

[4.4]把查询Student表和修改学生学号的权限授给用户U4

grant select,update(sno)
on student
to u4;

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

grant insert
on sc
to u5
with grant option;

[4.6]U5授权给U6
该题还正在解决,明显以下方式是错误的。

grant insert
on sc
to u6
with grant option;

在这里插入图片描述
此时的授权者明显是dbo,不是U5,但目前网络上对该问题的解答不是很多,查了很多资料还未解决。
[4.8]把用户U4修改学生学号的权限收回

revoke update(sno)
on student
from u4;

我们可以对比一下与授权的语句,差别只在
在这里插入图片描述
[4.9]收回所有用户对表SC的查询权限

revoke select
on sc
from public;

[4.10]把用户U5对SC表的INSERT权限收回

revoke insert
on sc
from u5;

角色

角色是 权限的集合。可以为一组具有相同权限的用户创建一个角色。

[4.11]通过角色来实现将一组权限授予一个用户。
创建角色:

create role a1;

授权:

grant select,update,insert
on student
to a1;

把角色权限授予给用户:

grant a1
to U1,U2,U3;

将用户权限收回:

revoke a1
from U1,U2;
//标准SQL但在SQLSEVER中不可用,等价于:
exec sp_droprolemember 'a1','U1'
exec sp_droprolemember 'a1','U2'

[4.12]角色的权限修改。

grant delete
on student
to a1;

[4.13]使a1减少了SELECT权限

revoke select
on student
from a1;

通过以上两个例子我们可以看出来,对角色的授权或更改和用户大体上是相同的。

强制存取控制规则

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

(2)仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体
个人理解:领导只负责检查不负责修改,下属只负责修改自己的部分,等于客体密级的用户为项目负责人,进行总揽全局。

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

create view cs_s
as
select *
from student
where sdept='cs';
//创建视图
grant select
on cs_s
to 王平;
//在视图的基础上进行授权
grant all
on cs_s
to 张明;

审计

审计日志:将用户对数据库的所有操作记录在上面
有点类似会计核对账本,审计就是通过对各个权限用户的操作记录找出违规的用户或操作。
[4.15]对修改SC表结构或修改SC表数据的操作进行审计

audit alter,update
on sc;
//标准sql,但会报错:
//消息 102,级别 15,状态 1,第 1 行
//“,”附近有语法错误。

查询了一些相关问题的回答,没看明白,而且我看audit在sqlsever中是没有颜色的,我的猜想是sql sever中不存在audit这个语法,或许是有其他的语法…
[4.16]取消对SC表的一切审计

onaudit alter,update
on sc;

该语句与上题是相同错误。

总的来说,第二遍没有第一遍写的那么有耐心了,很多细节方面也有点懒得写了,主要是因为和第一遍写的时候的感觉不同了。第一次写用了将近两个小时,对于一些语法有点生疏,很多问题查资料花费的时间很多。但第二遍再写的时候基本上就算一气呵成,看着题,代码直接就很流畅的写出来了。对于一些细节问题注意的也很到位。
另外就是,sql语句整体上不难,但需要主要的是很多语法是很相似的,因此刚开始学的时候对比着来学习效率更高一些,也以免后面会把一些语法弄串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值