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

  • 一、授权
    • 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. 02-CoreData 的增删改查
  2. 最高奖金5万|带打目标检测大赛!还给匹配神助攻队友!
  3. 凤舞天博客中的一些好的见解
  4. 编码 data:text/html;c,iOS 用TFHpple抓取GB-2312编码的html页面,页面返回编码错误
  5. PostgreSQL在何处处理 sql查询之二十一
  6. 力士乐伺服电机编码器调零_力士乐伺服电机编码器故障维修来这里
  7. 微信小程序项目,实现图书搜索高阶组件:
  8. java string rt_如何使jvm加载我的java.lang.String而不是rt.jar中的那个
  9. SQLAlchemy engine.Engine
  10. 系统工程理论与实践投稿经验_钱学森的系统工程 | 如是读
  11. node 压缩图片_设计神器!图片在线工具–Online Image Tool
  12. java 反射 方法 修饰符_超类中使用默认修饰符的Java反射访问方法
  13. 18-10-29 关于设计器机器人等安装遇到的问题的解决方法
  14. c# export server 调用sql_C# 如何调用 SPL 脚本
  15. Oracle10g安装在RHEL AS 3
  16. LINUX报错:apt transaction returned result exit-failed
  17. 概率论————思维导图(上岸必备)(随机事件与概率)
  18. Cocos游戏打包apk
  19. 1124 Raffle for Weibo Followers (20 分)
  20. Arduino检测不到串口的问题(改)

热门文章

  1. KDB内核调试 - 1
  2. 数据库之MySQL大全
  3. 大疆的精灵4 PRO 相机的一些问题
  4. 凝思系统机器名怎么查看_凝思操作系统常见问题及处理方法
  5. 三菱fx3u使用st语言adprw指令通过485-adp-mb模块与台达变频器进行通信
  6. Sqlmap 用户手册 使用教程
  7. CentOS切换中文拼音安装包时:zw 不在 sudoers 文件中。此事将被报告。【记录】
  8. 坚持就是胜利- -。。。。
  9. (二)QCustomPlot生成热力图/矩阵颜色图
  10. hndlrsvc.exe