4.2.4 授权:授予与收回

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

1.GRANT

GRANT语句的一般格式为:
GRANT<权限> [,<权限>]···
ON <对象类型> <对象名>[,<对象类型> <对象名>]···
TO<用户> [,<用户>]···
[WITH GRANT OPTION];

其语义为:将对指定操作对象的指定操作权限授予指定的用户。发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象创建者(即属主 owner),还可以是已经拥有该权限的用户。接受权限的用户可以是一个或多个具体用户,也可以是 PUBLIC,即全体用户

如果指定了 WITH GRANT OPTION子句则获得某种权限的用户还可以把这种权限再授予其他的用户。如果没有指定 WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,不能传播该权限。

SQL标准允许具有 WITH GRANT OPTION的用户把相应权限或其子集传递授予其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先。

例 4.4 把查询STUDENT表和修改学生学号的权限授权给用户U4。

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

这里,实际上要授予U4用户的是对基本表 Student的 SELECT权限和对属性列Sno的 UPDATE权限。对属性列授权时必须明确指出相应的属性列名。

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

GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;

执行此SQL语句后,U5不仅拥有了对表SC的 INSERT权限,还可以传播此权限,即由U5用户发上述 GRANT命令给其他用户。例如U5可以将此权限授予U6(例4.6)

例 4.6

GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;

同样,U6还可以将此权限授予U7(例 4.7)

例 4.7

GRANT INSERT
ON TABLE SC
TO U7;

因为U6未给U7传播的权限,因此U7不能再传播此权限。

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

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

例 4.10 把用户U5对SC表的INSERT权限收回。

REVOKE INSERT
ON TABLE SC
FROM U5 CASCADE;

将用户U5的 INSERT权限收回的同时,级联(CASCADE)收回了U6和U7的 INSERT权限,否则系统将拒绝执行该命令。因为在例4.6中,U5将对s表的 INSERT权限授予了U6,而U6又将其授予了U7(例4.7)

注意:这里默认值为CASCADE,有的数据库管理系统默认值为 RESTRICT,将自动执行级联操作。如果U6或U7还从其他用户处获得对C表 INSERT的权限,则他们仍具有此权限,系统只收回直接或间接从U5处获得的权限。

4.2.5 数据库角色

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。因此,可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。

在SQL中首先用 CREATE ROLE语句创建角色,然后用 GRANT语句给角色授权,用 REVOKE语句收回授予角色的权限。

例 4.11 通过角色来实现将一组权限授予一个用户。

步骤如下:
(1)首先创建一个角色R1。

CREATE ROLE R1;

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

GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1;

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

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

(4)当然,也可以一次性地通过R1来收回王平的这三个权限。

REVOKE R1
FROM 王平;

目前只明白怎么授权与收回,但具体让被授权的用户去实现被授权权限还没搞懂,搜也没搜到,这次只好对书上进行回顾,没有结果截图,下次课问问老师。

授权:授予与收回 和 数据库角色相关推荐

  1. 授权:授予与收回 以及 数据库角色、视图机制

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

  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. 数据库 - 数据库角色

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

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

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

  9. oracle数据库的访问控制,数据库角色访问控制

    基于角色的访问控制 (Role-based access control, RBAC) 是一种安全功能,用于控制用户对通常仅限于超级用户的任务的访问.通过对进程和用户应用安全属性,RBAC 可以向多个 ...

最新文章

  1. UICollectionView的基本使用(1)
  2. 这里有一个3天的秘境邀请!
  3. Oracle技术之和分区表相关的一点总结(四)
  4. Cisco路由器密码恢复方法
  5. python 求list最小值的索引_【挑战自学Python编程】第六天:前五天都学了啥?
  6. 汇编语言 明明定义了栈仍然no stack segment 以及栈空间数据被篡改问题
  7. Java 将excel中的内容导入数据库中
  8. 事务例子_图文详解:数据库事务与锁
  9. Synology DS213J 群晖NAS git server架设方法!
  10. Android系统模块编译
  11. leetcode—8.同向双指针—滑动窗口题型python解答
  12. 25. object类中的一些方法分析
  13. 最短路径算法之四——SPFA算法
  14. 黑莓刷机及情景设置来电和短信等没有声音的解决办法
  15. linux查看本机ip地址
  16. 英语12种记忆单词的方法
  17. 使用facebook账号登录
  18. 挑战SQL经典题(一)
  19. 四大蓝牙天线设计方式
  20. 手机点餐APP开发需求分析

热门文章

  1. java y z x_表示关系 X=Y=Z 的 JAVA 语言表达式为_机械工程材料及热处理答案_学小易找答案...
  2. 项目管理之从战略层出发完善组织架构管理
  3. 东南大学新增人工智能学硕!计算机科学与工程学院
  4. 少儿编程里java_Greenfoot【java学习】-方法
  5. 实现打印当前路径下所有文件名的命令_Linux 命令(二)
  6. 《字字带泪——写在三十岁到来这一天》 By 王潇
  7. cocos2dx:addAnimation如何创建精灵动画并在工程中调用展示
  8. Python笔记:布尔类型,逻辑运算符
  9. IMU惯性测量单元之陀螺仪综述
  10. 计算机组成原理 扩展指令的操作码,【计算机组成原理】指令系统