第四章-数据库安全性(例题)

一、授权与收回

1.授权:GRANT
其语义为将对指定操作对象的指定操作权限授予指定的用户
实验开始前我们要新建几个用户,直接在数据库,安全性,用户下右击新建即可,注意用户类型选择不带登录名的用户即可
在这里插入图片描述

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

GRANT select
on table Student
to U1;

但是却显示关键字 ‘to’ 附近有语法错误。

原因是T-SQL中是不需要写TABLE的
执行以下代码

GRANT select
on  Student
to U1;

没有出现错误
可在U1用户处点击属性查看有选择权限
在这里插入图片描述
例4.2把对Student表和Course表的全部操作权限授予用户U2和U3

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

这次把TABLE去掉后仍然出现了错误,原因是不能对两个表同时授予权限,分开授权后

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

这次虽然没有出现错误,但是却出现了提示ALL 权限已不再推荐使用,并且只保留用于兼容性目的。它并不表示对实体定义了 ALL 权限。
例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;

指定了WITH GRANT OPTION 子句,则获得某种权限的用户还可以把这种权限再授予其他的用户,但要注意不能再把权限再授回给授权者或其祖先
例4.6 从U5给U6权限

GRANT INSERT
ON TABLE SC
TO U6
WITH GRANT OPTION;

例4.7U6给U7权限

GRANT INSERT
ON TABLE SC
TO U7

由于U6未给U7传播的权限,因此U7不能再传播此权限
2.收回 revoke
例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 TABLE SC
FROM U5 CASCADE

在这里命令执行成功了,但是在以往的例子中CASCADE并没有什么作用,用了级联后,U6和U7的权限也一并取消。
在这里插入图片描述

二、角色

1.角色的创建

CREATE ROLE<角色名>

刚刚创建的角色是空的,没有任何内容,可以用GRANT 为角色授权
2.给角色授权

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

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

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

该语句把角色授予某用户,或授予另一个角色。这样,一个角色(例如角色3)所拥有的权限就是授予它的全部角色(角色1和角色2)所包含的权限的总和。
如果指定了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)接着给U1,U2,U3赋予角色

GRANT R1
TO U1,U2,U3;

但是却出现了语法错误
在这里插入图片描述
原因是在T-SQL中只能使用以下语句实现

EXEC sp_addrolemember 'R1','U1'
EXEC sp_addrolemember 'R1','U2'
EXEC sp_addrolemember 'R1','U3'

(4)收回U1权限

REVOKE R1
FROM U1

仍然出现语法错误,需用以下语句

EXEC sp_droprolemember 'R1','U1'

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

GRANT delete
on Student
to R1;

例4.13使R1减少了SELECT权限

REVOKE SELECT
ON Student
from R1;

三、视图

建立计算机系学生的视图,把对该视图的SELECT 权限授予U1,把该视图上的所有操作权限授予U2。
先要创建视图

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

接着把SELECT权限赋予U1

GRANT SELECT
ON CS_Student
TO 王平;

然后把所有的权限赋给U2

GRANT ALL PRIVILEGES
ON CS_Student
TO U2;

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

四、审计

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

AUDIT ALTER UPDATE
ON SC;

例 4.16 取消对SC表的一切审计

NOAUDIT ALTER UPDATE
ON SC;

要注意的是这两条语句在T-SQL中并不适用,具体方法还有点复杂,就先不写了

第四章的例题就到此结束了,总的来说跟第三章相比要记的东西少了很多,要注意的地方就是授权和角色两部分了。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
数据库E-R图是用来描述数据库中数据实体、关系和属性之间关系的一种图形化表示方法。它是数据库设计阶段的重要工具,可以帮助开发人员更好地理解和设计数据库结构。 E-R图主要由实体、关系和属性三个部分组成。 实体是指数据库中的具体事物,如学生、课程、教师等。每个实体都具有一组属性,用来描述该实体的特征。例如,学生实体可以有姓名、学号、年龄等属性。 关系是指不同实体之间的联系。关系可以是一对一、一对多或多对多的。例如,学生和课程之间的关系可以是一对多的关系,一个学生可以选修多门课程,而一门课程可以由多个学生选择。 属性是实体或关系的特征或性质。属性可以是简单属性,即不可再分的属性,也可以是复合属性,由多个简单属性组成。例如,一个学生的姓名、年龄、电话号码等都是学生实体的属性。 通过E-R图,可以清晰地描述数据库中实体、关系和属性之间的关系。在E-R图中,实体一般用矩形框表示,关系用菱形表示,属性用椭圆形表示。通过箭头或线段来表示实体之间的关系类型。 例题解析讲解就是通过具体的例子来演示如何使用E-R图进行数据库设计。通过解析例题可以了解如何根据需求将实体、关系和属性进行合理的组织和设计。同时,例题解析还可以帮助理解E-R图的绘制规则和表示方法,以及不同类型关系的处理方式。 总的来说,数据库E-R图是数据库设计的重要工具,通过它可以清晰地描述数据库中实体、关系和属性之间的关系。通过例题解析,我们可以更好地理解和应用E-R图进行数据库设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值