文章目录

  • ==GRANT (授予)语句用法==
  • ==REVOKE (收回)语句用法==
  • ==ROLE(角色)语句用法==
  • ==AUDIT (审计)语句用法==


正文开始


GRANT (授予)语句用法

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

WITH GRANT OPTION子句,指定:可以再授予,没有指定:不能传播
语义:将对指定操作对象的指定操作权限授予指定的用户

在这里注意一点:授予用户权限需要先建立用户,没有用户是做不了的。

建立用户步骤:
【右键】-【新建登录名】

ranger的hive赋权中通过url方式 hive赋权语句 grant_数据库


【选择SQL身份验证】-【输入密码】-【确定】

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象类型_02


在School数据库中建立用户

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象名_03


用户名和登录名一一对应

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象类型_04


建立完成,非常完美

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象名_05


ranger的hive赋权中通过url方式 hive赋权语句 grant_sqlserver_06


ok好了 ,我们把登录名用户名建立完成之后,开始学习了!


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

GRANT SELECT
ON TABLE Student
TO User1

ON TABLE Student

ON Student

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象类型_07

ranger的hive赋权中通过url方式 hive赋权语句 grant_sqlserver_08

可以看到:执行不带TABLE的语句正确

登录User1后 执行SELECT语句查询SC

如图 验证通过

ranger的hive赋权中通过url方式 hive赋权语句 grant_数据库_09

[例4.2] 把对Student表和Course表的全部权限授予用户User2和User3

GRANT ALL PRIVILEGES 
ON TABLE Student,Course 
TO User2,User3;

ON后只有一个对象

ON后有两个及以上

ranger的hive赋权中通过url方式 hive赋权语句 grant_sqlserver_10

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象类型_11

当ON后有多个对象时,语句错误
当有多条语句且ON后只有一个对象时,语句执行通过,并且提示 ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。

登录User2,验证 INSERT、DELETE、UPDATE都可以进行,验证通过,User3同理。

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

GRANT SELECT 
ON  SC 
TO PUBLIC

授予之后就是所有用户都可以对SC进行查询操作了,我们用User4来进行验证

登录User4之后,查俊结果如图,验证通过

ranger的hive赋权中通过url方式 hive赋权语句 grant_数据库_12


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

GRANT UPDATE(Sno), SELECT 
ON TABLE Student 
TO User4

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象名_13


验证只能修改学号

ranger的hive赋权中通过url方式 hive赋权语句 grant_sqlserver_14


验证通过

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

GRANT INSERT 
ON SC 
TO User5
WITH GRANT OPTION;

加上WITH GRANT OPTION;之后,User5不仅拥有了对SC的INSERT权限, 还拥有了传播的权限

【例4.6】

GRANT INSERT 
ON SC 
TO User6
WITH GRANT OPTION;

登录User5之后执行这条语句

ranger的hive赋权中通过url方式 hive赋权语句 grant_sqlserver_15


然后我看到有同学说,

ranger的hive赋权中通过url方式 hive赋权语句 grant_数据库_16


我觉得是登录U5之后,再执行这条语句,实际上是就是U5授予U6权限,不是(sa)授予的,所以我觉得没错U5->U6

【例4.7】

GRANT INSERT 
ON SC 
TO U7;

在这里U7就不能传播此权限了

REVOKE (收回)语句用法

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

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

REVOKE UPDATE(Sno)
ON Student 
FROM User4;

此时再执行User4的UPDATE操作,提示拒绝权限
[例4.9] 收回所有用户对表SC的查询权限

REVOKE SELECT 
ON TABLE SC 
FROM PUBLIC;

此时User1-User7都不能再对SC进行SELECT操作
[例4.10] 把用户User5对SC表的INSERT权限收回

REVOKE INSERT 
ON TABLE SC 
FROM U5 CASCADE

将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句 。

ranger的hive赋权中通过url方式 hive赋权语句 grant_数据库_17


如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限

ROLE(角色)语句用法

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

CREATE  ROLE  <角色名>

2.给角色授权

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

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

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

4.角色权限的收回

REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
/*用户可以回收角色的权限,从而修改角色拥有的权限
REVOKE执行者是:角色的创建者、拥有在这个(些)角色上的ADMIN OPTION*/

[例4.11] 通过角色来实现将一组权限授予一个用户。
我们一起来看一下
首先呢我们应该创建一个角色
(1)首先创建一个角色 R1

CREATE  ROLE  R1

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

GRANT SELECT,UPDATE,INSERT 
ON Student 
TO R1

这里可以把R1和前面讲的用户看做一样,都是
TO+____
因为在SQL server中ON TABLE出现错误,所以我把TABLE全部舍去
(3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限

GRANT R1 
TO 王平,张明,赵玲

(4) 可以一次性通过R1来回收王平的这3个权限

REVOKE R1 
FROM 王平

这样就不用

REVOKE SELECT,UPDATE,INSERT
FROM 王平

直接用R1来替代SELECT,UPDATE,INSERT
[例4.12] 角色的权限修改

GRANT DELETE 
ON TABLE Student
TO R1

这里是在角色R1原有的基础上,再授予R1 DELETE权限

[例4.13]

REVOKE SELECT 
ON TABLE Student
FROM  R1

这里是收回角色R1的SELECT权限

与此同时,被赋予角色的用户也会失去SELECT权限

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象类型_18


我突然想,万一收回R1本身没有的会咋办,然后试了一下,没出错。。。感觉这次还好,不是很难,每次GRANT和REVOKE的时候都感觉自己是个大老板,给这个员工升职加薪,给那个…啥啥的哈哈哈哈

文章首的链接也看到了这句话:文章就是一个瓶子,标题是瓶口,内容是瓶身。 瓶子装水有多快依赖瓶口大小,瓶子装水有多少依赖瓶身大小。

有点意思,大家一起体会一下

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象类型_19


AUDIT 见下条

AUDIT (审计)语句用法

ranger的hive赋权中通过url方式 hive赋权语句 grant_对象类型_20


可能你会问,什么是审计?

来看一下

  • 审计日志(Audit Log)
    将用户对数据库的所有操作记录在上面
  • 审计员利用审计日志
    监控数据库中的各种行为,
    找出非法存取数据的人、时间和内容

我记得在电视剧《都挺好》里面,苏明成的媳妇就是审计局的,当时因为碰巧还审计到自家小姑子苏明玉公司的头上来了,扯远了哈哈…

所以审计说白了就是去调查去监督,去发现问题,监督财务方面的真实性以及合规性。

  • 审计功能的可选性
  • 审计很费时间和空间
  • DBA可以打开或关闭审计功能
  • 审计功能主要用于安全性要求较高的部门

[例4.15] 对修改SC表结构或修改SC表数据的操作进行审计

AUDIT ALTER,UPDATE  
 ON  SC;

[例4.16] 取消对SC表的一切审计

NOAUDIT  ALTER,UPDATE  
  ON  SC;

AUDIT就这些,完成。