【Hbu数据库】第六周-2 数据库安全性 授予与回收

授权:授予与收回

授予

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

其中 with grant option 子句的作用是:
有with grant option的用户可以把权限继续授予下去
无该子句的用户则不能继续传递权限。

[例4.1] 把查询Student表权限授给用户U1
   GRANT   SELECT 
      ON   TABLE   Student 
      TO   U1;

在这里插入图片描述

sql-server的t-sql语法上有一定区别

 GRANT   SELECT 
  ON   Student 
  TO   U1;
把对Student表和Course表的全部权限授予用户U2和U3
Grant all PRIVILIGES
on Student,course
to u2,u3;

在这里插入图片描述
这里是因为 一方面T-SQL不需要(可以没有)PRIVILIGES 另一方面是t-sql里需要分别赋予权限,不可一次性赋予多个。

Grant all PRIVILEGES  
on Student
to u2,u3;

Grant all 
on SC
to u2,u3;

在这里插入图片描述

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

GRANT UPDATE(Sno), SELECT 
		ON  Student 
		TO U4

在这里插入图片描述

把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
  GRANT INSERT 
    ON TABLE SC 
    TO U5
    WITH GRANT OPTION;

这里的原因已经说了 就是with grant option子句
在这里插入图片描述
如果这时候用u5 用户登录 是可以通过这个用户去给别的用户授予SC表的insert权限的 但如果没有带子句则不能 我在做实验时因为用的是root账户 所以什么权限都有。

收回

REVOKE <权限>[,<权限>]... 
    ON <对象类型> <对象名>[,<对象类型><对象名>]FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
把用户U4修改学生学号的权限收回
REVOKE UPDATE(Sno)
		ON  Student 
		FROM U4;

在这里插入图片描述

收回所有用户对表SC的查询权限
REVOKE SELECT 
		ON SC 
		FROM PUBLIC;
把用户U5对SC表的INSERT权限收回
REVOKE INSERT 
		ON  SC 
		FROM U5 CASCADE ;
将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句 
奇怪的时候 这个时候T-SQl又支持上casade了
在收回u5权限的同时 所有从u5这里获得权限的用户的权限也会被一并收回

数据库角色

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

角色的创建:

CREATE  ROLE  <角色名> 

给角色授权:

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

将一个角色授予其他的角色或用户

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

该语句把角色授予某用户,或授予另一个角色
授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION
指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色
这里是要把角色和用户区分开的 不知道为什么觉得角色有点视图的感觉了。

角色权限的收回

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

当然 执行这一操作的前提是你得有操作这个角色的权限 比如你是他的创建者 或者通过某些方法的得到了他的权限

创建一个角色 R1
  CREATE  ROLE  R1;
然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
GRANT SELECT, UPDATE, INSERT 
    	 ON  Student 
    	 TO R1;
将这个角色授予U1,U2。使他们具有角色R1所包含的全部权限
	 GRANT  R1 
    	 TO U1,U2;

这里出错了!
在这里插入图片描述

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

这里又是一个小tips.

一次性收回U1的所有权限:

 	  REVOKE  R1 
     	  FROM U1;

在这里插入图片描述
这么处理:

EXEC sp_droprolemember 'R1','王平'

角色的权限修改

GRANT DELETE 
        ON  Student
        TO R1;

此时R1也得到了修改的权限
若要收回某个权限 使用revoke即可

不得不说 这一次实验的时候 t-sql自身特性层出不穷。。 让我想起以前玩游戏的时候不同版本之间也是不一样的,要头脑清晰才能熟练的去运用不同的sql语言。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值