2023年11月28日发(作者:)

专业:计算机科学与技术 课程:数据库系统原理

实验序号:3 实验名称:数据安全性控制及数据库恢复 成绩:

班级:13计本 学号:40 姓名:

一、实验目标:

掌握SQL Server数据库中通过用户及角色权限管理实现的安全控制措施

掌握SQL Server数据库的备份及还原操作

二、实验内容及操作步骤:

实验准备:

1.启动SQL Server Management Studio,以DBA身份连接SQL Server数据库服务器。

2.在服务器属性窗口的“安全性”页设置服务器身份验证模式为“SQL ServerWindows身份验证

模式”并重启服务

(一)用户权限管理

1.创建数据库服务器登录名

在对象资源管理器中的“服务器名安全性 ”节点上单击右键,选择“新建登录名”,在打开

的窗口中选择“SQL Server身份验证”,输入登录名为USER1,输入密码(密码自己定义)并确认

密码,取消选择“强制密码过期”,按“确定”按钮。

再创建一个数据库服务器登录名USER2

2.创建STU数据库的操作用户

在对象资源管理器中的“数据库名安全性用户”节点上单击右键,选择“新建用户”以打开

“数据库用户—新建”窗口,在窗口中关联登录名USER1创建操作用户U1:① 在“常规”选项

卡中,输入用户名,②点击“登录名”后的按钮,浏览并选择关联的登录名,按“确定”按钮。

再关联登录名USER2创建操作用户U2

3.设置操作权限并验证

点击“对象资源管理器”工具栏上的第一个图标“连接对象资源管理器”分别以USER1USER2

为登录名新建两个连接。试在这两个连接上展开STU数据库的表节点,观察现象并思考原因。

分别在三个连接(包括原有连接)上新建查询,通过观察三个查询编辑器窗口的下方用户信息,

以区分发出T-SQL指令的用户,实验过程中不能混淆。

在授权用户的查询窗口中执行授权或收回权限的T-SQL语句,同时在被授权用户的查询窗口中

输入相应语句进行权限验证。

1)使用Management Studio进行权限设置

权限说明:DBA将以下权限授给U1:①对表students的查询权限,②sdept属性的修改权限。

操作:在DBA连接上,打开STU数据库用户U1的属性窗口,选择安全对象页,点击添加

按钮浏览选择表students在右下部权限子窗口中:①在Select行授予列进行勾选(不要写序号)

②选择Update 行,点击列权限按钮,在 sdept 行“授予”列勾选;

验证:在U1的查询窗口中运行以下T-SQL语句:

权限①正例:SELECT * FROM students

权限①反例:DELETE FROM students

报错: 拒绝了对对象‘students(数据库stu,架构dbo)DELETE权限

权限②正例: update students set sdept=张三

权限②反例:UPDATE students SET sname='张三'

报错: 拒绝了对对象students的列sname(数据库stu,架构dbo)update权限

2)使用T-SQL语句设置权限

权限说明一:DBA将以下权限授给U2:③对表courses的查询权限及转授权限,④cname属性

的修改权限。

设置一:在 Administrator 的查询窗口中运行以下T-SQL语句:

权限③设置: grant select on courses to U2 with grant option

权限④设置: grant update(cname) on courses to U2

验证一:在 USER2 的查询窗口中运行以下T-SQL语句:

权限④正例: UPDATE courses SET cname=4

权限④反例:UPDATE courses SET credit=4 WHERE cno= c01 C01

(设有号课程)

权限说明二:⑤U2将对表courses的查询权限转授给U1

设置二:在 USER2 的查询窗口中运行以下T-SQL语句:

权限⑤设置: grant select on courses to U1

验证二:在U1的查询窗口中运行以下T-SQL语句:

权限⑤正例:SELECT * FROM courses

权限说明三:⑥DBA将用户U2对表courses的查询权限收回。

设置三:在Administrator 的查询窗口中运行以下T-SQL语句:

权限⑥设置: revoke select on courses from U2 cascade

验证三:分别在U2U1的查询窗口中运行以下T-SQL语句:

权限⑥验证:SELECT * FROM courses (对比权限⑤正例的执行结果)

报错: 拒绝了对对象courses(数据库stu,架构dbo)select 权限

(二)角色权限管理

1.创建STU数据库的角色

DBA 身份连接下,在对象资源管理器中的 数据库 STU 安全性角色数据库角色”节点

上单击右键,选择“新建数据库角色”,在打开的窗口中输入角色名称为R1,按“确定”按钮。

2.设置角色权限

权限说明:DBA将以下权限授给R1:⑦对表students的删除权限,⑧对表courses的全部权限

权限⑦设置:在DBA连接上,打开STU数据库角色R1的属性窗口,选择 安全对象 页,点击

“添加”按钮浏览选择表“students,在右下部权限子窗口中:①在DELETE行授予列进行勾选;

权限⑧设置:在DBA的查询窗口中运行T-SQL语句:

Grant all privileges on courses to R1

3.指定角色成员

1)使用Management Studio

DBA连接下做以下设置,指定R1成员U1

方法一:打开STU数据库角色R1的属性窗口,选择 常规 页,点击“添加”按钮,浏览

选择用户 U1 ,点击“确定”

方法二:打开STU数据库用户U1的属性窗口,选择 常规 页,在右下方角色成员

子窗口中勾选 R1 ,点击“确定”

2)使用T-SQL语句

DBA的查询窗口中运行T-SQL语句指定R1成员U2

EXEC sp_addrolemember R1,U2

4.角色权限验证

1)在U1的查询窗口中运行以下T-SQL语句:

权限⑦验证:DELETE FROM students

结果: 0行受影响(成功) (对比权限①反例的执行结果)

2)在U2的查询窗口中运行以下T-SQL语句:

权限⑧验证:UPDATE courses SET credit=4 WHERE cno= c01

结果: 0行受影响(成功)(对比权限④反例的执行结果)

(三)数据库备份及还原

1.对STU进行完整数据库备份

在对象资源管理器中的“ 数据库 STU ”节点上单击右键,选择

任务 备份 ,保持默认设置不变(完整、数据库),按“确定”按钮。

2.删除reports

1)执行T-SQL语句: drop table reports

2)在对象资源管理器中查看reports表的状态:不存在

3.使用备份将数据库还原至删除前状态

1)在对象资源管理器中的“数据库STU”节点上单击右键,选择“任务” 还原

数据库 ,保持“常规”页的设置不变,打开“ 选项 ”页,勾选“ 覆盖现有数据库

其它不变,按“确定”按钮。

2)在对象资源管理器中查看reports表的状态:存在

三、遇到问题及解决方法:

本实验中,刚开始不知道如何创建登陆用户,在老师的指导下,我学会了如何创建。在查询角色

时,我知道了如何将角色授予用户,学会了一些老师补充的语句。

通过本次实验,我掌握SQL Server数据库的备份及还原操作。受益匪浅。