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

前言

为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至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
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
scau数据库综合性试验是指南京科技大学数据库课程综合性实验,旨在通过结合课程所学的数据库知识和技能,进行项目实践,提高学生的数据库设计和管理能力。 在这个综合性试验,学生需要根据指定的项目需求,设计和创建一个数据库系统,并进行相的数据处理和管理。首先,学生需要明确项目需求,包括数据库系统的功能和业务逻辑,并进行数据库的概念设计和逻辑设计,确定数据库的结构、表的字段和系等。接下来,学生需要根据设计的数据库结构,使用特定的数据库管理系统(如MySQLSQL Server等)创建数据库,并进行数据的导入和管理。学生还需要编写SQL查询语句,对数据库的数据进行增删改查的操作,并实现相的业务功能。 在综合性试验过程,学生还需要考虑数据库安全性和性能优化,设计合理的数据库权限和索引等,以确保数据库系统的稳定和高效运行。此外,学生还需要进行项目报告的撰写,详细阐述数据库设计和实现的过程,以及遇到的问题和解决方案。 通过这个综合性试验,学生可以将课堂所学的数据库理论知识与实际项目实践相结合,加深对数据库系统设计和管理的理解,提高自己的综合能力和实际操作能力。同时,也有助于培养学生的团队合作能力和解决复杂问题的能力,为将来从事数据库工作打下坚实的基础

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Knight_V_Schumacher

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

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

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

打赏作者

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

抵扣说明:

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

余额充值