2023年11月28日发(作者:)
实 验 报 告
专业:计算机科学与技术 课程:数据库系统原理
实验序号:3 实验名称:数据安全性控制及数据库恢复 成绩:
班级:13计本 学号:40号 姓名:
一、实验目标:
掌握SQL Server数据库中通过用户及角色权限管理实现的安全控制措施
掌握SQL Server数据库的备份及还原操作
二、实验内容及操作步骤:
实验准备:
1.启动SQL Server Management Studio,以DBA身份连接SQL Server数据库服务器。
2.在服务器属性窗口的“安全性”页设置服务器身份验证模式为“SQL Server和Windows身份验证
模式”,并重启服务。
(一)用户权限管理
1.创建数据库服务器登录名
在对象资源管理器中的“服务器名安全性 ”节点上单击右键,选择“新建登录名”,在打开
的窗口中选择“SQL Server身份验证”,输入登录名为USER1,输入密码(密码自己定义)并确认
密码,取消选择“强制密码过期”,按“确定”按钮。
再创建一个数据库服务器登录名USER2。
2.创建STU数据库的操作用户
在对象资源管理器中的“数据库名安全性用户”节点上单击右键,选择“新建用户”以打开
“数据库用户—新建”窗口,在窗口中关联登录名USER1创建操作用户U1:① 在“常规”选项
卡中,输入用户名,②点击“登录名”后的按钮,浏览并选择关联的登录名,按“确定”按钮。
再关联登录名USER2创建操作用户U2。
3.设置操作权限并验证
点击“对象资源管理器”工具栏上的第一个图标“连接对象资源管理器”,分别以USER1和USER2
为登录名新建两个连接。试在这两个连接上展开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
验证三:分别在U2和U1的查询窗口中运行以下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数据库的备份及还原操作。受益匪浅。
发布评论