《数据库原理与应用》(第三版)第13章 安全管理 基础 习题参考答案

习 题
1.通常情况下,数据库中的权限划分为哪几类?
答:通常情况下,将数据库中的权限划分为两类。一类是对数据库系统进行维护的权限,另一类是对数据库中的对象和数据进行操作的权限。

2.数据库中的用户按其操作权限可分为哪几类,每一类的权限是什么?
答:数据库中的用户按其操作权限的不同可分为如下三类:
(1) 系统管理员:在数据库服务器上具有全部的权限
(2) 数据库对象拥有者:对其所拥有的对象具有全部权限。
(3) 普通用户:只具有对数据库数据的增、删、改、查权限。
3.SQL Server的登录名的来源有几种?分别是什么?
答:两种,Windows身份验证的和SQL Server身份验证的。

4.权限的管理包含哪些内容?
答:权限管理包含:授予权限、收回权限和拒绝权限。
5.什么是用户定义的角色,其作用是什么?
答:用户自己建立的角色,其作用是简化数据库用的权限管理。

6.在SQL Server中,用户定义的角色中可以包含哪些类型的成员?
答:可以包含普通用户、用户定义的角色。

7.写出实现下述功能到T-SQL语句。
(1)建立一个Windows身份验证的登录名,Windows域名为:CS,登录名为:Win_Jone。
答:CREATE LOGIN [CS\Win_jone] FROM WINDOWS;

(2)建立一个SQL Server身份验证的登录名,登录名为:SQL_Stu,密码为:3Wcd5sTap43K。
答:CREATE LOGIN SQL_Stu WITH PASSWORD = ‘3Wcd5sTap43K’;

(3)删除Windows身份验证的登录名,Windows域名为:IS,登录名为:U1。
答:DROP LOGIN [IS\U1]

(4)删除SQL Server身份验证的登录名,登录名为:U2。
答:DROP LOGIN U2

(5)建立一个数据库用户,用户名为SQL_Stu,对应的登录名为SQL Server身份验证的SQL_Stu。
答:CREATE USER SQL_Stu;

(6)建立一个数据库用户,用户名为Jone,对应的登录名为Windows身份验证的Win_Jone,Windows域名为:CS。
答:CREATE USER Jone FOR Win_Jone

(7)授予用户u1具有对course表的插入和删除权。
答:grant insert, delete on course to u1

(8)授予用户u1对Course表的删除权。
答:grant delete on course to u1

(9)收回u1对course表的删除权。
答:revoke delete on course from u1

(10)拒绝用户u1获得对Course表的更改权。
答:deny update on course to u1

(11)授予用户u1具有创建表和视图的权限。
答:grant create table,create view to u1

(12)收回用户u1创建表的权限。
答:revoke create table from u1

(13)建立一个新的用户定义的角色,角色名为:NewRole。
答:create role NewRole

(14)为New_Role角色授予SC表的查询和更改权。
答:grant select, update on sc to New_Role

(15)将SQL Server身份验证的u1用户和Windows身份验证的Win_Jone用户添加到New_Role角色中。
答:EXEC sp_addrolemember ‘New_Role’, ‘u1’
EXEC sp_addrolemember ‘New_Role’, ‘Win_Jone’

上机练习
3.用log1建立一个新的数据库引擎查询,并在Students数据库中执行下述语句,能否成功?为什么?
SELECT * FROM Course
答:不能,因为log1没有被授予Course表的查询权。

5.在SSMS中,用log2建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?
INSERT INTO Course VALUES(‘C101’,‘数据库基础’,4,5)
答:能成功,因为被授予了插入权。
再执行下述语句,能否成功?为什么?
SELECT * FROM Course
答:不能,因为log2没有被授予Course表的查询权。

6.在SSMS中,在log1建立的数据库引擎查询中,再次执行下述语句:
SELECT * FROM Course
答:能,因为log1被授予了Course的查询权。

这次能否成功?但如果执行下述语句:
INSERT INTO Course VALUES(‘C103’,‘软件工程’,4,5)
能否成功?为什么?
答:不能,因为log1被授予了Course的插入权。

10.在SSMS中,用pub_user建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?
SELECT * FROM Course
答:不能,因为pub_user没有被授予Course的查询权。

12.在pub_user建立的数据库引擎查询中,再次执行下述语句,能否成功?为什么?
SELECT * FROM Course
答:能,因为pub_user在SelectRole角色中,而SelectRole角色被授予了Course的查询权。

发布了750 篇原创文章 · 获赞 471 · 访问量 32万+

猜你喜欢

转载自blog.csdn.net/weixin_43336281/article/details/105500593