授权:授予与收回 以及 数据库角色

  • 一、授权
    • 1、授予
    • 2、收回
  • 二、数据库角色
    • 1、角色的创建
    • 2、给角色授权
    • 3、将一个角色授予其他的角色或用户
    • 4、角色权限的收回
  • 三、视图机制

一、授权

SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。GRANT语句向用户授予权限,REVOKE语句收回已经授予用户的权限。

1、授予

需提前建立用户:

创建结果:

GRANT语句的一般格式:

GRANT <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
TO <用户>[,<用户>]...
--可以是一个或多个具体用户,也可以是PUBLIC,即全体用户
[WITH GRANT OPTION];
--如果指定了,则获得某种权限的用户还可以把这种权限在授予其他用户

注:授权不允许循环授权

标准SQL语句:
例1:把查询Student表的权限授予用户U1
代码:

GRANT SELECT
ON TABLE Student
TO U1;

授予给某一位用户形式

例2:把对Student表和Course表的全部操作权限授予用户U2和U3

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

授予给多位用户形式,全部操作ALL PRIVILEGES

例3:把对表SC的查询权限授予所有用户

GRANT SELECT
ON TABLE SC
TO PUBLIC;

授予给全体用户PUBLIC

例4:把查询Student表和修改学生学号的权限授予用户U4

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

将部分属性列的相关权限授予给用户
对属性列授权时必须明确指明相应的属性列名

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

GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;

使用WITH GRANT OPTION,则用户拥有该操作的授权能力

例6:用户U5可以将此权限授予U6

GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;

U6还可以将此权限授予给U7

GRANT INSERT
ON TABLE SC
TO U7;

由上面的例子可以看到,GRANT语句可以一次向一个用户授权,也可以一次向多个用户授权,还可以一次传播多个同类对象的权限,甚至一次可以完成对基本表和属性列这些不同对象的授权。

运行以上代码出现错误:
因此,T-SQL语句应为:
例1:把查询Student表的权限授予用户U1
代码:

GRANT SELECT
ON Student
TO U1;

授予给某一位用户形式

例2:把对Student表和Course表的全部操作权限授予用户U2和U3

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

授予给多位用户形式,全部操作ALL PRIVILEGES
语句出现错误:
T-SQL中GRANT语句一次只能对一个对象进行授权,不能同时对两个表进行授权。
修改为

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

出现提示信息:

例3:把对表SC的查询权限授予所有用户

GRANT SELECT
ON SC
TO PUBLIC;

授予给全体用户PUBLIC

例4:把查询Student表和修改学生学号的权限授予用户U4

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

将部分属性列的相关权限授予给用户
对属性列授权时必须明确指明相应的属性列名

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

GRANT INSERT
ON SC
TO U5
WITH GRANT OPTION;

使用WITH GRANT OPTION,则用户拥有该操作的授权能力

例6:用户U5可以将此权限授予U6

GRANT INSERT
ON SC
TO U6
WITH GRANT OPTION;

U6还可以将此权限授予给U7

GRANT INSERT
ON SC
TO U7;

最终结果:
U1:

U2:

U3:

U4:

U5:

U6:

U7:

2、收回

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

REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
TO <用户>[,<用户>]...[CASCADE | RESTRICT];--默认值为cascade

例1:把用户U4修改学生学号的权限收回
代码:

REVOKE UPDATE(Sno)
ON Student --与标准SQL不同
FROM U4

例2:收回所有用户对表SC的查询权限

REVOKE SELECT
ON SC
FROM PUBLIC;

例3:把用户U5对SC表的INSERT权限收回

REVOKE INSERT
ON SC
FROM U5 CASCADE;

将用户U5的INSERT权限收回的时候应该使用CASCADE,否则拒绝执行该语句。因为U5将对SC表的INSERT权限赋予U6,U6又授予U7。如果U6或U7还从其他用户处获得对SC表的INSERT权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限

二、数据库角色

角色被命名的一组与数据库操作相关的权限,角色是权限的集合。可以为一组具有相同权限的用户创建一个角色。

1、角色的创建

语句格式:

CREATE  ROLE  <角色名> 

2、给角色授权

语句格式:

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

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

语句格式:

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

该语句把角色授予某用户,或授予另一个角色。指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色
一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限

4、角色权限的收回

语句格式:

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

用户可以回收角色的权限,从而修改角色拥有的权限。即先删除,再重新授权

例1:通过角色来实现将一组权限授予一个用户。
步骤如下:
(1)首先创建一个角色 R1
代码:

CREATE ROLE R1;

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

GRANT SELECT,UPDATE,INSERT
ON Student--标准SQL:ON TABLE Student
TO R1;

(3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限。
首先创建用户:王平,张明,赵玲

代码:

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

出现错误:

与标准SQL产生差别。
T-SQL:

exec sp_droprolemember[sp_addrolemember] 'db_owner','hehcong'
EXEC sp_addrolemember 'R1','王平';
EXEC sp_addrolemember 'R1','张明';
EXEC sp_addrolemember 'R1','赵玲';


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

REVOKE R1
FROM 王平;

出现错误:

与标准SQL产生差别。
T-SQL:

EXEC sp_droprolemember 'R1','王平';


例2:角色的权限修改

GRANT DELETE
ON Student
TO R1;

使角色R1在原来的基础上增加了Student表的DELETE 权限

例3:使R1减少了SELECT权限

REVOKE SELECT
ON Student
FROM R1;

三、视图机制

可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内。也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供定程度的,安全保护。
视图机制间接地实现: 支持存取谓词助用户权限定义。

例:建立计算机系学生的视图,把对该视图的SELECT权限授予王平,把该视图上的所有操作权限授予张明。
代码:

CREATE VIEW CS_Student
AS
SELECT *
FROM Student
WHERE Sdept='CS';
GRANT SELECT
ON CS_Student
TO 王平;
GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;



OVER!!!

授权:授予与收回 以及 数据库角色、视图机制相关推荐

  1. 授权:授予与收回 和 数据库角色

    4.2.4 授权:授予与收回 SQL中使用 GRANT和 REVOKE语句向用户授予或收回对数据的操作权限. GRANT语句向用户授予权限, REVOKE语句收回己经授予用户的权限. 1.GRANT ...

  2. mysql全备和指定库和表备份,mysql日志的分类简介和作用, mysql加速跳过域名解析,mysql权限授予与收回,数据库实用篇~~Tring

    mysql改密,重置,备份,权限和日志 改密~ 修改密码 重置密码 步骤 数据库备份 用到的命令: 可加参数 : -A 参数 例子: -B 参数 例子: 备份指定数据库的某个表 恢复表 创建用户 操作 ...

  3. SQL Server 数据库实验课第七周——授权:授予与收回

    目录 4.2.3 自主存取控制方法 4.2.4 授权:授予与收回 1.GRANT 2.REVOKE 4.2.5 数据库角色 4.2.3 自主存取控制方法 通过 SQL 的GRANT 语句和REVOKE ...

  4. 数据库作业8:SQL Server 的部分操作(授权:授予与收回)

    第四章 数据库安全性 4.2数据库安全性控制 三.自主存取控制方法 四.授权:授予与收回 1.GRANT 2.REVOKE 五.数据库角色 1.角色的创建 2.给角色授权 3.将一个角色授予其他的角色 ...

  5. 计算机三级数据库安全管理(一)、授权语句、WITH GRANT OPTION、guest、用户定义的数据库角色、Oracle安全管理、收权语句、安全管理、数据库用户、角色、用户分类、GRANT

    1.设某数据库中有表T1(c1,c2, c3),并只对U1执行了如下授权语句: GRANT SELECT ON T1 TO U1 下列语句中,U1无权执行的是 A.SELECT *FROM T1 B. ...

  6. Oracle数据库用户管理之二---权限授权去权(用户和角色)

                                Oracle数据库用户管理之二---权限授权去权(用户和角色) 书接上回,https://blog.csdn.net/alwaysbefine/ ...

  7. 4.0 《数据库系统概论》数据库安全性详解---(存取控制、DACMAC、视图机制、审计Audit....)

    文章目录 0.思维导图 1.数据库安全性概述 (1)为什么要研究数据库的安全性? (2)安全标准简介 ① TCSEC/TDI标准的基本内容 ② TCSEC/TDI安全级别划分 2.数据库安全性控制概述 ...

  8. 数据库 - 数据库角色

    数据库角色 数据库角色:被命名的一组与数据库操作相关的权限 角色是权限的集合 可以为一组具有相同权限的用户创建一个角色 简化授权的过程 一.角色的创建 CREATE ROLE <角色名> ...

  9. SQL Server中通用数据库角色权限的处理详解

    SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征.理解安全性问题是理解数据库管理系统安全性机制的前提. 最近和同事在做数据库权限清理的事情,主要是删除 ...

最新文章

  1. CodeGen融合核心扩展定制文件
  2. 国内首次 Istio Meetup 来了,主流社区专家邀你来共聊
  3. HEVC/H265 namespace 介绍
  4. linux 系统怎么安装vnc,在Linux系统中安装和使用VNC
  5. 狄慧201771010104《面向对象程序设计(java)》第十周学习总结
  6. bp神经网络matlab实例蚊子,bp神经网络matlab实例
  7. fastjson php,Fastjson 对象或数组转JSON
  8. Lnixu Bash
  9. IDES SAP SEM 4.0/SAP BW 3.50 笔记本安装手册
  10. Kubernetes网络策略,这一篇就够了
  11. python-snap7的安装记录
  12. P1564 膜拜 题解
  13. Android实现选择相册图片---类似微信的选择图片页面
  14. 华为交换机命令 端口速率_华为S5700交换机的端口QOS限速问题
  15. C++ Report:应用设计模式去简化信号控制
  16. Java高并发系列---第1天(概念)
  17. SAP FICO-模块 关于固定资产年结和折旧的问题
  18. eclipse pull异常 Pulling 1 respository (The pull operation was canceled)
  19. KDD2020的一篇序列推荐的论文《Geography-Aware Sequential Location Recommendation》
  20. TheFourthJavaText

热门文章

  1. rebar3使用介绍(二)配置项
  2. 订单系统设计 —— ABA更新
  3. php %3f,url=http%3A%2F%2Fbbs.byr.edu.cn%2Fpc%2Findex.php%3Fid%3Dgootyking  豆瓣音乐humanSmall站...
  4. 喜马拉雅更新招股书:2021年营收58.6亿 腾讯百度小米是股东
  5. Android 手机TV端屏幕共享助手
  6. Unity3d 5烘焙相关
  7. 流行发型--空间修剪+立体空间烫
  8. java本地缓存 google guava
  9. pcl::lineToLineSegment() 计算空间直线的交点和最小公垂线
  10. iOS 在其它APP中通过本APP打开的文件如何保存至本APP,然后使用