【数据库实验】数据库安全性

grant 和 revoke 语句

在这里插入图片描述

grant 授予权限
GRANT <权限>[,<权限>]... 
ON <对象类型> <对象名>[,<对象类型> <对象名>]TO <用户>[,<用户>]... 
[WITH GRANT OPTION];
WITH GRANT OPTION子句: 指定:可以再授予 没有指定:不能传播
[例4.1] 把查询Student表权限授给用户U1

在这里插入图片描述
这里tsql和标准sql又出现了不同之处。
在这里插入图片描述
在这里插入图片描述

grant select
on  Student
to U1;
[例4.2] 把对Student表和Course表的全部权限授予用户U2和U3

在这里插入图片描述
这里之所以报错:tsql不能直接操作两个表的权限
在这里插入图片描述

grant all privileges
on student
to U2 , U3;
grant all privileges
on  course
to U2 , U3;
ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。

看来这个all权限已经deprecated了。

[例4.3] 把对表SC的查询权限授予所有用户
grant all privileges
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权限

首先我们先登录u5
在这里插入图片描述

grant insert
on sc
to u6
with grant option;
[例4.7] U6给U7权限
grant insert
on sc
to u7
with grant option;
revoke 收回权限
REVOKE <权限>[,<权限>]... 
ON <对象类型> <对象名>[,<对象类型><对象名>]FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
[例4.8] 把用户U4修改学生学号的权限收回
revoke update(SNO)
on student
from U4
[例4.9] 收回所有用户对表SC的查询权限
revoke select 
on sc
from public
[例4.10] 把用户U5对SC表的INSERT权限收回

在这里插入图片描述
在这里插入图片描述
我们在 之前 的实验里,一直用不上cascade关键词,我一度以为他没啥用;在这用到了。
当然u6,u7的权限也就没了

revoke insert
on sc
from U5 cascade

角色role

1.角色的创建 
CREATE  ROLE  <角色名> 
2.给角色授权 
GRANT  <权限>[,<权限>]ON <对象类型>对象名 
TO <角色>[,<角色>]3.
将一个角色授予其他的角色或用户 
GRANT  <角色1>[,<角色2>]TO  <角色3>[,<用户1>][WITH ADMIN OPTION]

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

4.角色权限的收回 
REVOKE <权限>[,<权限>]ON <对象类型> <对象名> 
FROM <角色>[,<角色>]
[例4.11] 通过角色来实现将一组权限授予一个用户。

首先我们创建一个用户R1

create role R1;

然后我们给他权限

grant select , update,insert
on student
to R1

然后我们给u1 u2 u3这个角色
在这里插入图片描述我们发现他是不支持这个的(为啥微软这么多不和标准sql一样?)
经过查询,我们使用
(这里不是很会哈,稍等我会进行更深一步的查询)

EXEC sp_addrolemember 'R1','U1'
EXEC sp_addrolemember 'R1','U2'
EXEC sp_addrolemember 'R1','U3'

在这里插入图片描述
我们尝试收回u1的权限
在这里插入图片描述
和想象中一样,还是不行,试试把刚才那个语句的add改成drop(其实我刚开始想的del)
在这里插入图片描述

EXEC sp_droprolemember 'R1','U1'
[例4.12] 角色的权限修改

使角色R1在原来的基础上增加了Student表的DELETE 权限
在这里插入图片描述

grant delete
on student
to R1
[例4.13]使R1减少了SELECT权限

使R1减少了SELECT权限
在这里插入图片描述

revoke select
on student
from R1

tsql和标准sql在好多地方都不一样,想必tsql是为了更安全?但是对于学习者来说,确实有点小晕。
(这几天事太多了,还差一个第三章课后题,就写完这周的db作业了)

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值