数据库第五次试验:数据库的安全性

前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!

一、实验目的

1、使学生掌握自主存取控制权限的定义和维护方法,加深对数据安全性的理解。
2、掌握数据库的备份与还原操作。

二、实验要求

1、访问权限设置。
2、数据库的备份还原。

三、实验原理、方法和手段

1、SQL Server 新增用户并控制访问权限设置。
(1)新增用户
进入数据库:【安全性】—>【登录名】—>【新建登录名】,如图 5.1 所示

在这里插入图片描述

图 5.1

在打开的常规选项卡中,创建登录名。注意设置默认的数据库,如图 5.2 所示。

在这里插入图片描述

图 5.2

在【用户映射】下设置该用户所能访问的数据库。并设置架构。点击确认按钮,完成该用户的创建。如图 5.3 所示。
在这里插入图片描述

图 5.3

接下来对该用户访问 S-T 数据库中具体的某一个表进行设置。选择该数据库下的表进行设置,右键菜单单击【属性】,如图 5.4。
在这里插入图片描述

图 5.4

在【权限】选项中,依次点击【搜索】—>【浏览】—>【选择对象】选中新添加的test 用户,如图 5.5,5.6,5.7 所示。
在这里插入图片描述

图 5.5

在这里插入图片描述

图 5.6

在这里插入图片描述

图 5.7

点击确定按钮,就可以对该表设置对应的权限。设定 test 用户对于该表具有“插入”“更改”“更新”“删除”的权限。点击确定按钮就完成 test 用户对于该表的访问权限的设置。如图 5.8 所示。
在这里插入图片描述

图 5.8

右击数据库的连接并选择属性,在安全性中默认是 windows 模式,改选为 sa 和 windows模式点击确定。使用 test 用户登录数据库,登录后只能看到 S-T 的 student 表。如图 5.9,5.10,5.11,5.12 所示。
在这里插入图片描述

图 5.9

在这里插入图片描述

图 5.10

在这里插入图片描述

图 5.11

在这里插入图片描述

图 5.12

2、使用 SQL 语句创建用户并授权及回收权限
在SQL Server查询分析器的输入区中输入SQL语句;设置查询分析器的结果区Standard Execute(标准执行)或 Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看结果;如果结果不正确,要进行修改,直到正确为止。
(1)增加登录帐号和密码

EXEC sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] 

例如:EXEC sp_addlogin 'U2','02'
(2)添加一个数据库用户
通过用户映射的操作,使用 sp_grantdbaccess 为登录名在一个具体的数据库中新建用户。例如:

use [S-T]
EXEC sp_grantdbaccess 'U2'

(3)给用户授权
使用 GRANT 语句为用户授权
例如:

use [S-T]
grant insert,update,select,delete on Student to U2

(4) 回收权限
使用 REVOKE 语句回收权限。
例如:

use [S-T]
revoke update(SNO) on Student from U2

3、使用 SQL 语句创建数据库角色与授权
(1) 创建数据库角色
使用 sp_addrole 创建数据库角色
例如:

use [S-T]
 EXEC sp_addrole 'G1'

(2) 给数据库角色授权
使用 GRANT 语句为角色授权
例如:

use [S-T]
grant select,update,insert,delete on SC to G1

(3) 将用户加入数据库角色
使用 sp_addrolemember 将用户加入数据库角色,是用户具有角色的权限
例如:

use [S-T]
 EXEC sp_addrolemember 'G1','U2'

执行完各个语句之后,可以分别以不同用户的身份登录数据库,进行相关操作,检查系统是否许可。
4、数据库的备份还原
(1)备份“Student”数据库
在窗口左侧的“对象资源管理器”下选中用户数据库“S-T”,单击鼠标右键,选择“任务”下面的“备份”。如图 5.13
在这里插入图片描述

图 5.13

在弹出的窗口中选择需要备份的数据库,并修改保存路径(将原有路径删除后重新添加新的路径),单击“确定”按钮完成数据库备份。
在这里插入图片描述

图 5.14

(2)还原“S-T”数据库(可先删除“S-T”数据库,后完成还原。)
在 Microsoft SQL Server Management Studio 左侧的“对象资源管理器”下找到“数据库”,单击鼠标右键,选择“还原数据库”。
在这里插入图片描述

图 5.15

如图 5.16 所示,在“还原数据”窗口输入目标数据库名字,选择“源设备”,找到相应文件。
在这里插入图片描述

图 5.16

如图 5.17 所示,点击“添加”按钮,弹出“定位备份文件”对话框。
在这里插入图片描述

图 5.17

如图 5.18 所示,找到备份的数据库路径,选中 S-T1 数据库,点击“确定”按钮。
在这里插入图片描述

图 5.18

勾选用于还原的备份集,点击“确定”按钮,完成数据库的备份。如图 5.19,5.20 所示。
在这里插入图片描述

图 5.19

在这里插入图片描述

图 5.20

四、实验组织运行要求

本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。开始实验前,必须进行预习,实验过程中,先集中由老师进行具体要求和注意事项的讲解,然后各自独立在机器上完成实验。实验过程中出现问题,在实验指导老师帮助下解决。

五、实验条件

(1)硬件条件:个人计算机。
(2)软件条件:Windows;MS SQL Server。

六、实验步骤

1、基本操作实验
(1)建立用户并授权
建立登录帐号 U1、U2、U3、U4、U5、U6、U7 和对应的数据库 S-T 的用户 dbu1、dbu2、dbu3、dbu4、dbyu5、dbu6、dbu7。
在 SYSTEM(即 DBA)与七个用户之间进行授权。

  1. 把查询 Student 表的权限授给用户 U1。
  2. 把对 Student 表和 Course 表的全部操作权限授予用户 U2 和 U3。
  3. 把对表 SC 的查询权限授予所有用户。
  4. 把查询 Student 表和修改学生学号的权限授给用户 U4。
  5. 把对表 SC 的 INSERT 权限授予 U5,并允许 U5 将此权限再授予其他用户。
  6. 用户 U5 将对表 SC 的 INSERT 权限授予 U6,并允许将权限转授给其他用户。
  7. 用户 U6 将对表 SC 的 INSERT 权限授予 U7。
  8. 在授权之后验证用户是否拥有了相应的权限。
    (2) 回收权限。
    将(1)授予的权限部分收回,检查回收后,该用户是否真正丧失了对数据的相应权限。
    1)收回用户 U4 修改学生学号的权限。
    2)收回所有用户对表 SC 的查询权限。
  9. 收回用户 U5 对 SC 表的 INSERT 权限。
    4)在回收权限之后验证用户是否真正丧失了该权限。
    (3)数据库角色的创建与授权。
    1)创建数据库角色 G1。
    2)给数据库角色授权,使得数据库角色 G1 拥有对 Student 表的 SELECT、UPDATE、INSERT 的权限。
    3)将用户 U1,U3,U7 添加到数据库角色 G1 中来。
    4)对数据库角色 G1 的权限进行修改,增加对 Student 表的 DELETE 权限,并回收对Student 表的 INSERT 权限。
    (4)实现数据库的备份和还原 2、提高操作实验
    对自设计的数据库应用项目,用 SQL 语句进行授权及回收权限。

七、思考题

1、写出实现所有操作要求的 SQL 语句。

八、实验报告

1、基本操作实验
(1)建立用户并授权
建立登录帐号 U1、U2、U3、U4、U5、U6、U7 和对应的数据库 S-T 的用户 dbu1、dbu2、dbu3、dbu4、dbyu5、dbu6、dbu7。

EXEC sp_addlogin 'U1','01'
use ST
EXEC sp_grantdbaccess 'U1','dbu1'

EXEC sp_addlogin 'U2','02'
use ST
EXEC sp_grantdbaccess 'U2','dbu2'

EXEC sp_addlogin 'U3','03'
use ST
EXEC sp_grantdbaccess 'U3','dbu3'

EXEC sp_addlogin 'U4','04'
use ST
EXEC sp_grantdbaccess 'U4','dbu4'

EXEC sp_addlogin 'U5','05'
use ST
EXEC sp_grantdbaccess 'U5','dbu5'

EXEC sp_addlogin 'U6','06'
use ST
EXEC sp_grantdbaccess 'U6','dbu6'

EXEC sp_addlogin 'U7','07'
use ST
EXEC sp_grantdbaccess 'U7','dbu7'

在 SYSTEM(即 DBA)与七个用户之间进行授权。
1)把查询 Student 表的权限授给用户 U1。

use ST grant select on Student to dbu1

2)把对 Student 表和 Course 表的全部操作权限授予用户 U2 和 U3。

use ST grant insert,update,select,delete on Student to dbu2,dbu3 grant insert,update,select,delete on Course to dbu2,dbu3

3)把对表 SC 的查询权限授予所有用户。

use ST grant select on SC to public

4)把查询 Student 表和修改学生学号的权限授给用户 U4。

use ST grant select,update(SNO) on Student to dbu4

5)把对表 SC 的 INSERT 权限授予 U5,并允许 U5 将此权限再授予其他用户。

use ST grant insert on SC to dbu5 with grant option

6)用户 U5 将对表 SC 的 INSERT 权限授予 U6,并允许将权限转授给其他用户。

use ST grant insert on SC to dbu6 with grant option

7)用户 U6 将对表 SC 的 INSERT 权限授予 U7。

use ST grant insert on SC to dbu7

8)在授权之后验证用户是否拥有了相应的权限。
在这里插入图片描述

1.把查询 Student 表的权限授给用户 U1。
在这里插入图片描述

2.把对 Student 表和 Course 表的全部操作权限授予用户 U2 和 U3。
在这里插入图片描述
在这里插入图片描述

3.把对表 SC 的查询权限授予所有用户。
在这里插入图片描述

4.把查询Student表和修改学生学号的权限授给用户U4。
在这里插入图片描述
在这里插入图片描述

5.把对表SC的INSERT权限授予U5,并允许U5将此权限再授予其他用户。
在这里插入图片描述

6.用户 U5 将对表 SC 的 INSERT 权限授予 U6,并允许将权限转授给其他用户。
在这里插入图片描述

7.用户 U6 将对表 SC 的 INSERT 权限授予 U7。
在这里插入图片描述

(2) 回收权限。
将(1)授予的权限部分收回,检查回收后,该用户是否真正丧失了对数据的相应权限。
1)收回用户 U4 修改学生学号的权限。

use ST revoke update(SNO) on Student from dbu4

2)收回所有用户对表 SC 的查询权限。

use ST revoke select on SC from public

3)收回用户 U5 对 SC 表的 INSERT 权限。

use ST  revoke insert on SC from dbu5 cascade

4)在回收权限之后验证用户是否真正丧失了该权限。
1.收回用户 U4 修改学生学号的权限。
在这里插入图片描述

2.收回所有用户对表 SC 的查询权限。
在这里插入图片描述

3.收回用户 U5 对 SC 表的 INSERT 权限。
在这里插入图片描述

(3)数据库角色的创建与授权。

  1. 创建数据库角色 G1。
    use ST EXEC sp_addrole ‘G1’
    在这里插入图片描述

2)给数据库角色授权,使得数据库角色 G1 拥有对 Student 表的 SELECT、UPDATE、INSERT 的权限。

use ST grant select,update,insert,delete on Student to G1

在这里插入图片描述

3)将用户 U1,U3,U7 添加到数据库角色 G1 中来。

use ST
EXEC sp_addrolemember 'G1','dbu1'
EXEC sp_addrolemember 'G1','dbu3'
EXEC sp_addrolemember 'G1','dbu7'

在这里插入图片描述

4)对数据库角色 G1 的权限进行修改,增加对 Student 表的 DELETE 权限,并回收对Student 表的 INSERT 权限。

use ST grant delete on Student to G1 revoke insert  on Student from G1 cascade

在这里插入图片描述

(4)实现数据库的备份和还原
1.数据库的备份:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
备份结果如下图所示:
在这里插入图片描述
2.数据库的还原:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、提高操作实验
对自设计的数据库应用项目,用 SQL 语句进行授权及回收权限。
1.新建登录账号U1和对应的数据库librarydb的用户dbu1

EXEC sp_addlogin 'U1','01'
use librarydb
EXEC sp_grantdbaccess 'U1','dbu1'

在这里插入图片描述

在system对其进行授权,把查询book表的授权给用户U1:

use librarydb grant select on book to dbu1

在这里插入图片描述

收回用户U1对book表的查询权限

use librarydb revoke select on book from dbu1

在这里插入图片描述

  • 2
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一、实验目的 使学生加深对数据库安全性和完整性的理解。并掌握SQL Server用户、角色及操作权限的管理方法。熟悉通过SQL语句对数据进行完整性控制。 二、实验内容和要求   数据库安全性实验,在SQL Server企业管理器,设置SQL Server的安全认证模式,实现对SQL Server的用户和角色管理,设置和管理数据操作权限。   具体内容如下:   设置SQL Server的安全认证模式(Windows或SQL Server和Windows(S)认证模式)。   登录的管理 创建一个登录用户   数据库用户的管理 登陆用户只有成为数据库用户Database User)后才能访问数据库。每个数据库用户信息都存放在系统表Sysusers,通过查看Sysusers表可以看到该数据库所有用户的情况。SQL Server的数据库都有两个默认用户:dbo(数据库拥有者用户)和(dba)。通过系统存储过程或企业管理器可以创建新的数据库用户。   角色的管理 创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限。   在学生表定义主键、外键约束。   在课程表的“课程名”字段上定义唯一约束。   在选课表的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100.“课程号”字段只能输入数字字符。   定义规则,并绑定到读者表的“性别”字段,使之只能取“男、女”值。   在学生表增加出生日期字段。定义缺省,并绑定到借阅表的“借阅日期”上,使之只能取当前日期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight_V_Schumacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值