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

2023-11-11

4.2.3 自主存取控制方法

通过 SQL 的GRANT 语句和REVOKE 语句实现
定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些操作
在这里插入图片描述

4.2.4 授权:授予与收回

1.GRANT

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

WITH GRANT OPTION子句:
①指定:可以再授予
②没有指定:不能传播
语义:将对指定操作对象的指定操作权限授予指定的用户
新建用户名U1—U7,和相应的登录名
注意登录名必须映射到数据库用户才能连接到数据库。 一个登录名可以作为不同用户映射到不同的数据库,**但在每个数据库中只能作为一个用户进行映射。 **

CREATE LOGIN U_1 WITH PASSWORD='12345';--新建登录名U_1
CREATE USER U1 FOR LOGIN U_1; --新建用户名
CREATE LOGIN U_2 WITH PASSWORD='12345';
CREATE USER U2 FOR LOGIN U_2; 
CREATE LOGIN U_3 WITH PASSWORD='12345';
CREATE USER U3 FOR LOGIN U_3; 
CREATE LOGIN U_4 WITH PASSWORD='12345';
CREATE USER U4 FOR LOGIN U_4; 
CREATE LOGIN U_5 WITH PASSWORD='12345';
CREATE USER U5 FOR LOGIN U_5; 
CREATE LOGIN U_6 WITH PASSWORD='12345';
CREATE USER U6 FOR LOGIN U_6; 
CREATE LOGIN U_7 WITH PASSWORD='12345';
CREATE USER U7 FOR LOGIN U_7; 

用户名
在这里插入图片描述
登录名
在这里插入图片描述
例4.1把查询Student表权限授给用户U1

GRANT SELECT 
ON TABLE Student
TO U1;

SQL-Server报错
在这里插入图片描述
SQL-Server代码

GRANT SELECT 
ON Student
TO U1;

在这里插入图片描述

例4.2把对Student表和Course表的全部权限授予用户U2和U3

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

报错
在这里插入图片描述
原因:grant语句一次只能对一个对象进行赋权,不能同时对两个表进行赋权;但是我们可以同时赋给对象多个不同的权限
SQL-Server代码

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

提示
在这里插入图片描述
结果
在这里插入图片描述
例4.3 把对表SC的查询权限授予所有用户

GRANT SELECT
ON SC
TO PUBLIC;

在这里插入图片描述
例4.4把查询Student表和修改学生学号的权限授给用户U4

GRANT UPDATE(Sno),SELECT 
ON Student
TO U4

在这里插入图片描述
例4.5把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

GRANT INSERT
ON SC
TO U5
WITH GRANT OPTION;

在这里插入图片描述
执行例4.5后,U5不仅拥有了对表SC的INSERT权限,
还可以传播此权限。
例4.6以U5对应登录名U_5登录数据库,对Stu数据库进行操作

GRANT INSERT
ON SC
TO U6
WITH GRANT OPTION;

在这里插入图片描述

在这里插入图片描述

登录U6查看权限
在这里插入图片描述

在这里插入图片描述

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

GRANT INSERT 
ON SC 
TO U7;

在这里插入图片描述

但U7不能再传播此权限。因为U6未给U7传播的权限,因此U7不能再传播此权限
如U7将权限授予U1
在这里插入图片描述
在这里插入图片描述

2.REVOKE

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

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

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

REVOKE UPDATE(Sno)
ON Student
FROM U4

在这里插入图片描述
例4.9收回所有用户对表SC的查询权限

REVOKE SELECT
ON SC
FROM PUBLIC;

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

REVOKE INSERT
ON SC
FROM U5 CASCADE;

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

执行例4.8~4.10语句后学生-课程数据库中的用户权限定义表
在这里插入图片描述

4.2.5 数据库角色

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

CREATE  ROLE  <角色名> 

2.给角色授权

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

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

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

该语句把角色授予某用户,或授予另一个角色
授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION
指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色
一个角色的权限:直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限
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

在这里插入图片描述
(3)将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
先新建用户,王平,赵明,张玲

CREATE LOGIN 王平1 WITH PASSWORD='12345';--新建登录名U_1
CREATE USER 王平 FOR LOGIN 王平1; --新建用户名
CREATE LOGIN 张明1 WITH PASSWORD='12345';--新建登录名U_1
CREATE USER 张明 FOR LOGIN 张明1; --新建用户名
CREATE LOGIN 赵玲1 WITH PASSWORD='12345';--新建登录名U_1
CREATE USER 赵玲 FOR LOGIN 赵玲1; --新建用户名

授予

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

报错
在这里插入图片描述
正确

EXEC sp_addrolemember 'R1','王平'
EXEC sp_addrolemember 'R1','张明'
EXEC sp_addrolemember 'R1','赵玲'

在这里插入图片描述
参考博客SqlServer数据库添加角色,角色授权
(4) 可以一次性通过R1来回收王平的这3个权限

REVOKE R1
FROM 王平

在这里插入图片描述
正确代码

EXEC sp_droprolemember 'R1','王平'

例4.12角色的权限修改,使角色R1在原来的基础上增加了Student表的DELETE 权限

GRANT DELETE
ON Student
TO R1

在这里插入图片描述
例4.13使R1减少了SELECT权限

REVOKE SELECT
ON Student
FROM R1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 数据库实验课第七周——授权:授予与收回 的相关文章

  • linux 基础(一)

    1 Linux常见发行版 Linux发行版有三大主流分支 Debian Slackware Redhat 包含的主要发行版分别如下 Debian Ubuntu Linux mint Knopix Slackware S u S E SLES
  • 机器学习之单变量线性回归

    1 线性回归基础概念 回归模型 regression model 数据集 包含feature 输入变量 和与之对应的target 输出变量 训练集 training set 输入数据 x feature or input feature 输
  • esp8266一键安装arduino_ESP8266如何获取B站粉丝数、关注数和播放量?

    硬件 ESP8266 12板 0 96 IIC驱动OLED一个 杜邦线4根 1 获取API接口 打开B站个人中心 按下F12 刷新页面 搜索这个词 https api bilibili com x relation stat vmid 40
  • 进程、线程、协程

    一 名词概念 1 什么是进程 what is process 进程是操作系统提供的抽象概念 是系统进行资源分配和调度的基本单位 是操作系统结构的基础 程序是指令 数据及其组织形式的描述 进程是程序的实体 程序本身是没有生命周期的 它只是存在
  • 系统稳定性方法论 - 降发生

    上一篇 lt 系统稳定性方法论 序篇 gt 中提到了系统稳定性的4大抓手 今天就先说说其中的第一个 降发生 何为 降发生 降发生指的是 从设计阶段开始 开发阶段 测试阶段 上线前的准备阶段 上线阶段到最后上线后的回归测试阶段 在这整个过程中
  • 微信云托管-填坑之旅

    微信云开发开始收费了 一个月20块钱 贼贵 用不起 而按用量收费 资源还能复用的兄弟产品微信云托管还像还行 所以就有了一场填坑旅行 windows10下安装docker之坑 在本地开发 需要使用docker 但是下载 安装docker后 大
  • less查看日志常用命令

    在Linux系统中 使用less命令可以查看日志文件 下面是一些常用的less命令 less filename 查看指定文件的内容 pattern 搜索包含指定模式的文本 可以使用向上或向下箭头浏览搜索结果 n 在搜索结果中跳转到下一个匹配
  • 组合数--深度优先算法(DFS)的简单实现

    找出从自然数 1 2 n 0
  • Github上堪称最全的面试题库(Java岗)到底有多香

    前言 最近金三银四想必大家或多或少都有去面试 面试前也都会有刷刷题的习惯 不过网上有太多的Java面试题库了 大部分都潦潦草草 没有知识储备的小伙伴一般很难看下去 看完后也不会留下印象 最近也是有粉丝私信我说求一份 图文并茂 易于理解 代码
  • linux终端基本操作命令

    Linux系统一切皆为文件 所有命令都是小写 使用命令的格式 命令名 操作内容 1 man 其他命令名 命令介绍 主要看name部分 2 ls ls 文件夹名或者说路径 列出指定路径下的内容 ls a 列出当前目录下所有内容 包括点开头的和
  • QModbusServer

    目录 数据 1 setData 重载一 重载二 2 writeData 3 Data 重载一 重载二 4 readData 数据 1 setData 重载一 将数据写入Modbus服务器 Modbus服务器有四个表 A表 每个表有一个唯一的
  • 5G/NR 学习笔记: 波束赋形 / beam 管理

    What beam 是对于整列天线电磁波传播的一种样式 一个天线的时候 电磁波的辐射方向是360度传播的 但是一个天线阵列可以实现电磁波单方向传播 天线个数越多 电磁波传播方向越集中 https www rcrwireless com 20
  • 微服务:gateway的使用,和解决跨域问题,用户认证与网关整合

    1 网关介绍 API网关出现的原因是微服务架构的出现 不同的微服务一般会有不同的网络地址 而外部客户端可能需要调用多个服务的接口才能完成一个业务需求 如果让客户端直接与各个微服务通信 会有以下的问题 1 客户端会多次请求不同的微服务 增加了
  • JDK、JRE、JVM三者之间的关系

    jdk java development kit java开发工具包 jre java runtime environment java运行时环境 jvm java virtual machine java虚拟机 jdk环境配置 jdk环境
  • MAPREDUCE的JOB提交流程

    在hadoop1 0版本以前我们的Mapreduce是被当作资源调度和计算框架来使用的 成为了hadoop运行生态圈的瓶颈 所以在hadoop2 0版本以上引入了yarn的概念 使Mapreduce完全成为分布式计算框架 而Yarn成为了分
  • jquery ajax url中有中文,后端乱码的解决方法.txt

    参考 https zhidao baidu com question 2057437468670456147 html url类似 http localhost 8080 floorsNodes 风管 json 方法 在jquery aja
  • HTML标签的分类

    HTML的标签 一 分类 1 排版标签 2 标题标签 3 段落标签 4 水平线标签 5 换行标签 6 文本格式标签 7 标签属性 8 图像标签 二 应用 1 排版标签 与css搭配使用 显示网页结构的标签 是网页布局中的常用标签 2 标题标
  • 验证码拦不住机器人了!谷歌AI已能精准识别模糊文字,GPT-4则装瞎求人帮忙

    丰色 发自 凹非寺量子位 公众号 QbitAI 最烦登网站时各种奇奇怪怪 甚至变态 的验证码了 现在 有一个好消息和一个坏消息 好消息就是 AI可以帮你代劳这件事了 不信你瞧 以下是三张识别难度依次递增的真实案例 而这些是一个名为 Pix2

随机推荐

  • 华退学博士王垠:离开是为了获得力量后再回来

    清华退学博士王垠 离开是为了获得力量后再回来 附万言退学书 只提供一种模具生产 标准化的人 而忽视 教育的多样性 的中国教育界是可悲的 异端王垠用现身说法打破了教育界 沉默的螺旋 文 张洋 王垠出名了 这是迟早的事 但这一次 他的出名更多是
  • MySQL LOAD DATA INFILE - 加载没有主键的文件实战

    首先告诉大家关于 MySQL LOAD DATA INFILE 加载没有主键的文件 是可以操作的 接下来就来实战一把 表imagecode结构可以看到有3列 其中id是自增列 drop table imagecode create tabl
  • ztree异步加载

    1 配置好参数 var setting ztreeSetting view showIcon false 前面文件夹显示状态 data key name MC 数据结构的属性由name改成MC async enable true url u
  • 【NVM】node多个版本管理工具安装步骤以及使用

    1 什么是nvm nvm是一个管理nodejs版本的工具 在实际的开发中 有些项目的开发依赖需要不同版本的nodejs运行环境 此时我们就需要使用nvm来管理nodejs版本 2 安装步骤 2 1 下载nvm https github co
  • linux文件赋予用户权限,Linux 给用户赋予操作权限

    chown Rkeesail keesail local赋予local目录给keesailchmod760 local赋予local目录读写权这个目chmod777文件夹名称 可以把文件夹设置成所有用户都有完全的权限 不过更改系统文件夹下的
  • WSL2的安装详细过程(转载)

    这部分记录了如何安装wsl 以及如何升级到wsl2的心酸历程 文章目录 版本要求 升级windows WSL的安装 升级到WSL2 安装linux分发版 排查安装问题 相关链接 记录所踩的坑 版本要求 安装wsl2对系统版本有硬性的要求 运
  • mysql的行转列和列转行

    一 行转列 即将原本同一列下多行的不同内容作为多个字段 输出对应内容 建表语句 DROP TABLE IF EXISTS tb score CREATE TABLE tb score id INT 11 NOT NULL auto incr
  • 语义分割常用数据集整理

    语义分割的数据集分为三类 2D图片 2 5D图片 RGB D 3D图片 每一个类别的数据集都提供了像素级的标签 可以用来评估模型性能 同时其中一部分工作用到了数据增强来增加标签样本的数量 一 2D数据 1 PASCAL Visual Obj
  • 更换 CentOS 7 的下载源为阿里云

    1 备份 mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo backup 2 下载新的CentOS Base repo 到 etc yum repos
  • vue3 hooks的简单使用 组合式函数

    想当于vue2的mixins 我们可以使用hooks代替mixins 官方文档 组合式函数 hooks 特点 vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入 不同在于 hooks 是函数 vue3 中的 hook
  • 离线脱机局域网环境安装visual studio2019企业版

    我这个文章借鉴了网友的一些方法 自己改编的用于记录以后方便自己用 亲测2022社区版可能因为我电脑的win10系统不完善的原因 无法 安装 最后试了2019企业版成功安装 1 在官网下载安装包 点击跳转 2 点开的网页 我英语不好 我翻译了
  • 终极篇 C++算法到安卓的移植——AS调用VS的so库

    目的 windows平台下的c 算法 需要移植到安卓系统上 平时用惯了Visual Studio 再在其他软件上重新写算法 调试算法 实在头疼 所以我用VS的c 移动开发功能创建动态共享库 将算法内容放入 并实现JNI和JAVA接口部分 最
  • libvirt介绍和使用

    libvirt介绍和使用 导读 why what libvirt具体介绍 API 剖析 driver 剖析 如何使用libvirt why what 实现一朵可运行 可运维的云 需要完整的实现三层 VIM层 VNFM层 NFVO层 其中实现
  • C语言文件操作详解(解析各文件函数,如何应用文件函数)

    前言 我们为什么要在C语言中引进文件的概念呢 试想一个场景 我们写好了通讯录的源代码运行后录入了联系人的信息 但是每次的操作范围只局限在此次的执行程序中 执行程序一关 联系人的信息随着执行程序在内存中的消失而消失 因此 我们需要把联系人信息
  • 算法训练营day48

    文章目录 198 打家劫舍 思路分析 代码实现 思考总结 213 打家劫舍II 思路分析 代码实现 337 打家劫舍 III 树形DP 思路分析 代码实现 思考总结 198 打家劫舍 题目链接 你是一个专业的小偷 计划偷窃沿街的房屋 每间房
  • Java String 类练习

    文章目录 前言 一 一些常用的String方法 二 StringBuffer和StringBuilder 1 StringBuffer 2 StringBuilder 一个小项目 学生信息查询系统 简易版 前言 字符串广泛应用 在 Java
  • Docker跨CPU架构使用

    CPU架构 amd64 x86 arm64 mips64el等等 amd64 CPU架构的电脑默认是不能使用其他架构的镜像 但可以通过qemu的技术来实现 Docker跨CPU使用 举例说明 x86 64 CPU架构的电脑运行 ARM64
  • 性能测试:工具篇:Jmeter实时可视化平台搭建

    部署 influxDB 首先 pull influxBD镜像 拉取是1 8的版本 虽有2 0 的版本 但我还是喜欢站在巨人的肩头前行 debugfeng debugfeng sudo docker pull influxdb 1 8 1 8
  • sql for 循环

    declare i int set i 1 while i lt 100 begin update top 1 t set name i where name 123 set i i 1 end
  • SQL Server 数据库实验课第七周——授权:授予与收回

    目录 4 2 3 自主存取控制方法 4 2 4 授权 授予与收回 1 GRANT 2 REVOKE 4 2 5 数据库角色 4 2 3 自主存取控制方法 通过 SQL 的GRANT 语句和REVOKE 语句实现 定义用户存取权限 定义用户可