ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库作业10:第四章例题

2021-04-18 15:05:31  阅读:414  来源: 互联网

标签:10 例题 R1 角色 GRANT 用户 SC 权限 第四章


数据库作业10:第四章例题

本文可分为一下几个内容

授权:授予与收回

新建登录名

像以下方式创建登录名以及对应的用户“U1~U7”;
在这里插入图片描述
新建用户;
在这里插入图片描述

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

1、GRANT

GRANT语句的一般格式为

GRANT <权限>[,<权限>]...
ON<对象类型><对象名>[,<对象类型><对象名>]...
TO<用户>[,<用户>]...
[WITH GRANT OPTION];
  • "[WITH GRANT OPTION];"是指被授权用户还可以授予其他用户权限,但不允许循环授予;

[例4.1]把查询Student表的权限授给用户U1。

按照书上语句运行,实验报错,查询后是T-SQL与标准SQL的区别!删除“TABLE”即可。

链接:https://zhidao.baidu.com/question/2073697404154667628.html
在这里插入图片描述

GRANT SELECT
ON Student
TO U1;

在这里插入图片描述

[例4.2]把对Student表和Course表的全部操作权限授予用户U2和U3。

按照书上的语句,提示“,”附近有语法错误;
在这里插入图片描述
查找资料后发现:

“权限主体,权限,要授予对其权限的对象,都必须要求具体指明;所以如果是以对象为单位,确实只能一次授予一个对象;”
链接:https://zhidao.baidu.com/question/1770654523778836780.html

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;

在这里插入图片描述

  • U5不仅拥有了对SC表的INSERT权限,还可以传播此权限,由U5用户发上述GRANT命令给其他用户。

[例4.6]由用户U5将此权限授予U6。

  • 为了测试,将数据库断开连接,改用U5登录

在这里插入图片描述

GRANT INSERT
ON SC
TO U6
WITH GRANT OPTION;

在这里插入图片描述
[例4.7]U6将此权限授予U7。

  • 同样,先将数据库断开连接,使用用户U6登录;
GRANT INSERT
ON SC
TO U7;

在这里插入图片描述

  • 此时U6未给U7传播的权限,因此U7不能再传播此项权限!

2、REVOKE

授予用户的权限可以由数据库管理员或其他授权者用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)收回了U6和U7的INSERT权限,否则系统将拒绝执行该命令。

数据库角色

1、角色的创建

创建角色的SQL语句格式是:

CREATE ROLE<角色名>
  • 创建角色为空,没有任何内容,可以用GRANT语句为角色授权。

2、给角色授权

GRANT<权限>[,<权限>]...
ON<对象类型>对象名
TO<角色>[,<角色>]...
  • 数据库管理员和用户可以利用GRANT语句将权限授予某一个或几个角色。

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

GRANT<角色1>[,<角色2>]...
TO<角色3>[,<用户1>]...
[WITH ADMIN OPTION]
  • 授予或者是角色的创建者,或者拥有在这个角色上的ADMIN OPTION。
  • 如果制定了WITH ADMIN OPTION子句,则获得某种权限的角色或用户还可以把这种权限再授予其他角色。

4、角色权限的收回

REVOKE<权限>[,<权限>]...
ON<对象类型><对象名>
FROM<角色>[,<角色>]...
  • 用户可以收回角色的权限,从而修改角色拥有的权限。

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

1)创建一个角色R1;

CREATE ROLE R1;

在这里插入图片描述
2)然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限。

GRANT SELECT,UPDATE,INSERT
ON Student
TO R1;

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

  • 先为王平、张明、赵玲新建数据库角色;

在这里插入图片描述

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

alter role R1
add member 王平;
alter role R1
add member 张明;
alter role R1
add member 赵玲;

在这里插入图片描述

  • 书中语句提示在“R1”附近出现语法错误,查询资料修改后命令成功完成

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

exec sp_droprolemember 'R1','王平';

在这里插入图片描述

  • 书中语句同样提示在“R1”附近出现语法错误,查询资料修改后命令成功完成

[例4.12]角色的权限修改。

REVOKE DELETE
ON Student
FROM R1

在这里插入图片描述

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

[例4.13]使R1减少了SELECT权限。

REVOKE SELECT
ON Student
FROM R1;

在这里插入图片描述

  • 数据库角色是一组权限的集合。使用角色来管理数据库权限可以简化授权的过程,使自主授权的执行更加灵活、方便。

视图机制

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

GO
CREATE VIEW CS_Student
AS
	SELECT *
	FROM Student
	WHERE Sdept='CS';

GRANT SELECT
ON CS_Student
TO 王平;

GRANT ALL PRIVILEGES
ON CS_Student
TO 张明;
GO

在这里插入图片描述
在这里插入图片描述

在运行时提示CREATE VIEW必须是批处理中仅有的语句
百度发现,添加GO即可
链接:https://jingyan.baidu.com/article/a3a3f8112d40eb8da2eb8aa4.html

审计

  • 审计功能就是数据库管理系统达到C2以上安全级别必不可少的一项指标。
  • 审计日志是将用户对数据库的所有操作记录在上面。

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

AUDIT ALTER,UPDATE
ON SC;

在这里插入图片描述

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

NOAUDIT ALTER,UPADATE
ON SC;

在这里插入图片描述

本次实验相对难度较大,T-SQL与标准SQL有诸如查询时"TABLE"以及审计语言等差别,在学习时应该仔细区分。

以上为第四章例题全部内容,包含授权、数据库角色、审计等内容。

感谢阅读~

标签:10,例题,R1,角色,GRANT,用户,SC,权限,第四章
来源: https://blog.csdn.net/qq_51776413/article/details/115815966

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有