实验五 数据库的安全性
- 格式:doc
- 大小:1.75 MB
- 文档页数:24
数据库原理
实验指导书
实验五SQL Server 2000中数据库安全性设置
1. 实验的目的
1)熟悉通过SQL对数据进行安全性控制。
2)完成作业的上机练习。
2. 实验内容
要求:在SQLSERVER2000中利用SQL语句完成以下操作。
1)通过SQL对登入账号,用户的创建修改与删除。
2)通过SQL对角色管理,以及角色中添加用户。
3)对角色和用户数据的授权和权力回收
3. 实验步骤
1)复制生成xscj数据库的代码并运行。
2)创建登入账号和用户名s1,s2,t1,t2,l1,l2密码与账号相同默认登入访问xscj数据库。
3)创建角色student,teacher,leader。
4)为角色student授权student表、course表和SC表的select 权力,拒绝修改和删除这三个表的权力
5)为角色teacher授权student表、course表和SC表的select 权力,以及对SC表的修改,插入更新的权力, 拒绝修改student表和course表的权力
6)为角色leader授权student表、course表和SC表的select 权力,以及对student表、course 表修改,插入更新的权力,拒绝修改和删除表SC的权力
7)将s1,s2加入student角色
8)将t1,t2加入teacher角色
9)将l1,l2加入leader角色
10)分别以s1,t1,l1登入服务器验证对student表、course表和SC表相应权限的验证。
数据库基础与实践实验报告实验五存储过程和触发器班级:惠普测试142学号:**********姓名:***日期:2016-11-141 实验目的:1)掌握SQL进行存储过程创建和调用的方法;2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;3)掌握触发器禁用和重新启用的方法。
2 实验平台:操作系统:Windows xp。
实验环境:SQL Server 2000以上版本。
3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。
1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。
存储过程定义代码:CREATE PROCEDURE JSXX_PROCASSELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND o=o存储过程执行语句与执行结果截图:EXECUTE JSXX_PROC2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。
存储过程定义代码:CREATE PROCEDURE XM_PROC @sname VARCHAR(100)ASBEGINIF EXISTS(SELECT NULL FROM S WHERE sn=@sname)SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE o=o AND SC.sno=S.sno ANDS.sn=@snameELSEPRINT'无该姓名的同学。
'END运行截图:3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。
如果没有该专业,则显示“无此专业”。
存储过程定义代码:CREATE PROCEDURE XBNL_PROC@departName VARCHAR(30)='计算机',@begin INT,@end INTASDECLARE @numOfBoys INTDECLARE @numOfGirls INTDECLARE @d# VARCHAR(3)DECLARE @result VARCHAR(50)BEGINSELECT @d# = dno FROM D WHERE dn=@departNameIF @d# IS NOT NULLBEGINSELECT @numOfBoys =COUNT(sno)FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'SELECT@numOfGirls =COUNT(sno)FROM S WHERE age BETWEEN@begin AND@end AND dno=@d# AND sex='女'SET @result = @departName+'专业年龄在'+CAST(@begin AS VARCHAR(3))+'-'+CAST(@end AS VARCHAR(3))+'之间的男生有'+CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+CAST(@numOfGirls AS VARCHAR(3))+'人'ENDELSESET @result='无此专业。
《数据库系统原理》实验指导书《数据库系统原理》实验指导书实验1 熟悉SQL Server 2000环境及数据库⽂件管理⼀、实验⽬的1、掌握登录SQL Server 2000的⽅法,熟悉SQL Server实⽤⼯具的使⽤;2、了解SQL Serve数据库的存储结构,掌握估算数据库⼤⼩技术;3、掌握创建数据库技术,掌握扩⼤和压缩数据库技术;4、掌握使⽤企业管理器⼯具和T-SQL语句及系统存储过程对数据库进⾏管理。
⼆、实验要求1、熟悉SQL Server 2000的⼯作环境,了解SQL Server主要管理⼯具的⽤途和使⽤⽅法。
2、掌握在SQL Server 2000环境下,利⽤企业管理器和T-SQL语⾔创建和管理数据库的⽅法。
三、实验设备、环境设备:奔腾II或奔腾II以上计算机环境:WINDOWS 98或WINDOWS NT、SQL SERVER 2000中⽂版四、实验原理、⽅法上机操作五、实验步骤及内容(⼀)实验步骤1、教师讲授2、教师演⽰3、学⽣实际操作(⼆)实验内容1、熟悉SQL Server 2000管理⼯具(1)企业管理器(Enterprise Manager)(2)查询分析器(Query Analyzer)(3)服务管理器(Service Manager)(4)事件探查器(Profiler)(5)导⼊和导出数据(Import and Export Data)(6)SQL Server其他管理⼯具2、数据库⽂件管理(1)数据库的创建和删除。
①在企业管理器中建⽴⼀个图书读者库。
图书读者数据库中将包括⼀个数据⽂件和⼀个⽇志⽂件,各⽂件的属性见表1-1。
②删除上题所建的数据库然后⽤T-SQL语句重新创建。
(2)修改数据库①查看图书读者数据库的属性及数据⽂件和⽇志⽂件的空间使⽤情况。
②在企业管理器中,⾸先扩⼤图书读者数据库的主数据⽂件的⼤⼩,然后查看扩⼤后的数据库属性,接着收缩主数据⽂件到定义时的⼤⼩。
实验五视图、索引及数据更新一、实验目的:熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。
二、实验属性(验证性)1.了解并掌握SQL查询分析器及企业管理器的使用;2.掌握基本表的定义、删除与修改。
三、实验原理SQL语言应用。
四、实验步骤:(1) 启动Oracle的SQL Developer或者SQL Plus,或者SQL Server 查询分析器;(2) 对于Oracle11g的SQL Plus需要进行登录,对于Oracle11g的SQL Developer需要进行建立连接。
1 建立索引建立唯一索引:例3.1 为学生选课数据库中的Students,Courses,SC三个表建立索引。
其中Students表按Sname升序建唯一索引,Courses表按Cname升序建唯一索引,SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
查看自己建立的索引:2 删除索引例3.2 删除基本表SC上的Rep_SCno索引。
然后查询看索引是否还存在。
理解索引的意义。
例3.3 删除基本表student上的Rep_Sno索引。
3 建立视图例3.4 建立数学系学生的视图C_Student,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
例3.5 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图Student_CR。
例 3.6定义一个反映学生出生年份的视图student_birth(sno,sname,s_birth,ssex,sdept)。
视图建立后,使用命令查询自己创建的视图:4 查询视图例3.7 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。
例3.8 在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。
实验五编程实施学生、选课、成绩简易管理系统一.目的与要求1.通过编程扩展“学生选课系统”的功能。
2.进一步掌握调试程序的基本步骤和方法。
二.实验内容1.使学生、教师和课程表具有增加、修改、删除和查询数据的功能。
2.学生根据开设的课程进行选课.3.教师根据学生所选课程进行成绩登录。
4.各类统计分析,比如平均成绩。
系统说明:学生:可以进行选课、退课、查分、查看学生自己的信息、修改自己的密码。
教师:可以查询已选学生、登分、查看教师自己的信息、修改自己的密码。
管理员:可以增加和删除课程、学生、教师等信息,可以查看和修改学生、教师密码,可以注册和注消学生、教师,有所有学生的功能,能够查询教师信息。
部分窗口如下:部分代码如下:如查分代码如下:通过datawindow中通过学号可以查看自己成绩。
dw_1.reset()dw_1.settransobject(SQLCA)dw_1.retrieve(user)dw_1.object.datawindow.readonly="yes"三.上机体会。
进一步掌握了开发管理系统的基本方法;掌握了使用PowerBuilder开发环境提供的工具建立应用程序的步骤和方法;掌握应用PowerBuilder提供的调试程序进行应用程序的调试。
实验六SQL Server 2000高级技术的使用一.目的与要求1.练习存储过程的建立和使用。
2.学会触发器的使用。
二.实验内容1.存储过程的建立和使用。
(1)创建存储过程,使其具有如下功能:根据所提供的学号参数,返回该学生的学习情况信息。
(2)查看和修改存储过程;(3)使用存储过程;(4)删除存储过程。
2.触发器的建立和使用(1)创建两个触发器,分别具有如下功能:a.将删除的学生选课信息转移到存档学生选课表中;b.在修改学生成绩时,要求修改后的成绩一定要比原来的成绩高;(2)查看和修改触发器;(3)使用触发器;(4)删除触发器;3.为实验五设计存储过程和触发器,通过调试验证其正确性。
实验五数据库的安全性控制一、实验目的:1. 通过实验加深对数据安全性的理解,并掌握SQL Server中有关用户登录的认证以及管理办法;2. 通过实验加深对数据库存储控制机制的理解,通过自主存取控制进行权限管理,熟悉SQL Server中角色管理;3.通过实验加深对数据安全性的理解,熟悉视图机制在自主存取控制上的应用。
二、实验内容1.设置SQL Server的混合安全认证模式。
在SQL Server中的对象资源管理器中设置安全认证模式。
2.在SQL Server中,利用“对象资源管理器”创建一个名为“U1”的登录用户和数据库用户,密码为111,并允许其登录S-T数据库。
3.在SQL Server中,利用代码创建一个名为“U2”的登录用户,密码为111;其相应的数据库用户名为lucky,并允许其登录S-T数据库。
4.用“u1”用户名登录后,执行对students表的查询操作,说明执行结果,并分析原因(建议:在启动一个SQL Server 2008窗口)。
分析:没有对u1进行其他操作的授权,只能登录而不能进行插入,修改等操作5.将students表的操作权限select和insert赋予数据库用户u1,并允许其向其它用户授权。
6.以“u1”用户名登录,执行对students和teacher表的查询操作,将该运行结果进行分析。
分析:对比第4题,对U1进行授权后可以进行相应的操作7.执行下列代码后,分析用户u2能否对s_t数据库的student表进行select 和update操作,为什么?并用相应的语句验证。
分析:首先grant给public组赋予了查询,插入,更新权限,然后给lucky用户赋予了对S表的所有权限,然后又revoke收回了lucky的权限,但并没有收回public组的权限,而deny却收回了lucky的更新权限,故查询可实现,而更新不可实现8.以sa登录数据库,在s_t数据库的stc表上创建选修了课程B001的视图st_view。
数据库实验五在学习数据库的过程中,实验是巩固理论知识、提高实践能力的重要环节。
本次实验五主要围绕数据库的某些关键操作和应用展开,通过实际动手操作,让我们对数据库的理解更加深入和全面。
本次实验的环境是常见的数据库管理系统,如 MySQL 或 SQL Server 等。
实验的目的是让我们熟练掌握数据库的查询、更新、插入和删除等基本操作,同时能够运用这些操作解决一些实际的问题。
实验的第一个任务是进行数据的查询操作。
查询是从数据库中获取所需信息的重要手段。
我们需要根据给定的条件,从数据表中筛选出符合要求的数据。
这就涉及到了使用 WHERE 子句来设定条件,以及各种运算符如等于(=)、大于(>)、小于(<)、不等于(<>)等的运用。
同时,还需要掌握连接(JOIN)操作,将多个相关的数据表连接起来,以获取更全面和准确的信息。
例如,在一个学生成绩管理系统中,要查询某个班级中数学成绩大于 80 分的学生名单,就需要先从学生表中获取班级信息,再从成绩表中筛选出数学成绩符合条件的记录,最后通过学生学号将两个表连接起来,得到最终的结果。
接下来是数据的更新操作。
这包括对已有数据的修改和删除。
在进行更新操作时,必须格外小心,因为一旦操作失误,可能会导致数据的丢失或错误。
在修改数据时,同样要使用 WHERE 子句来指定要修改的记录。
例如,要将某个学生的数学成绩从 80 分修改为 90 分,就需要明确指定该学生的学号或其他唯一标识。
而删除数据则需要更加谨慎,通常建议先进行查询,确认要删除的记录准确无误后,再执行删除操作。
数据的插入操作也是实验的重要部分。
插入新的数据可以增加数据库的信息量。
在插入数据时,需要注意数据的类型和格式要与数据表的定义相匹配。
比如,一个学生信息表中,学号是整数类型,姓名是字符串类型,出生日期是日期类型,如果插入的数据类型不正确,就会导致插入失败。
在实验过程中,我也遇到了一些问题和挑战。
比如,在进行复杂的查询操作时,由于条件设置不当,导致查询结果不准确。
实验五数据库完整性与安全性实验1、实验目的1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。
2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解2、实验环境操作系统:Microsoft Windows 7旗舰版(32位)。
数据库版本:MySQL 6.23、实验内容3.1完整性实验:(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;在create table 时已经定义了各个基表的主键。
因此,首先对每个基表删除主键,再添加主键。
实现实体完整性约束。
如下图。
删除主键:添加主键:sc表中的cno和sno分别是course表和student表的外关键字。
下图为给sc表添加student和course的外键,实现参照完整性约束。
alter table sc add constraint fk_student foreign key(sno) references student(sno);alter table sc add constraint fk_course foreign key(cno) references course(cno);主键和外键均添加成功,输入show create table 命令来查看各基表信息。
(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;向课程表中插入课程号为C01的课程。
向学生表中插入学号为30201的学生。
由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。
验证了实体完整性约束。
(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。
数据库实验报告:实验五一、实验目的本次数据库实验五的主要目的是深入了解和掌握数据库的高级操作,包括存储过程的创建与使用、视图的定义和应用、以及事务处理的原理和实践。
通过这些实验内容,提高我们对数据库系统的综合运用能力,为解决实际的数据库管理问题打下坚实的基础。
二、实验环境本次实验使用的数据库管理系统是 MySQL 80,开发工具为 Navicat Premium 12。
操作系统为 Windows 10 专业版。
三、实验内容及步骤(一)存储过程的创建与使用1、创建一个名为`get_student_info` 的存储过程,用于根据学生学号查询学生的基本信息(包括学号、姓名、年龄、性别和专业)。
```sqlDELIMITER //CREATE PROCEDURE get_student_info(IN student_id INT)BEGINSELECT FROM students WHERE student_id = student_id;END //DELIMITER ;```2、调用上述存储过程,查询学号为 1001 的学生信息。
```sqlCALL get_student_info(1001);```(二)视图的定义和应用1、创建一个名为`student_grade_view` 的视图,用于显示学生的学号、姓名和平均成绩。
```sqlCREATE VIEW student_grade_view ASSELECT sstudent_id, sname, AVG(ggrade) AS average_gradeFROM students sJOIN grades g ON sstudent_id = gstudent_idGROUP BY sstudent_id, sname;```2、查询上述视图,获取所有学生的平均成绩信息。
```sqlSELECT FROM student_grade_view;```(三)事务处理1、开启一个事务,向学生表中插入一条新的学生记录(学号:1005,姓名:_____,年龄:20,性别:男,专业:计算机科学)。
《数据库系统原理》实验报告五题目:实验五数据库的安全性学号:xxxxxxxxxxx 姓名:lrm_1036 日期:2010-12-23一、实验环境:SQL server 2005二、实验目的:1. 熟悉通过SQL对数据进行安全性控制;2. 完成上机练习。
三、实验内容与完成情况:1. 设置安全级别(1)打开SSMS的“对象资源管理器”窗口,选择目标服务器,右击,在弹出的快捷菜单中选择“属性”命令,进入“服务器属性”窗口,如图1所示;(2)打开“安全性”选项界面,如图2所示;(3)在“服务器身份验证”选项组中进行身份验证模式的选择,其中包括“Windows 身份验证模式”和“SQL Server 和Windows身份验证模式”,默认选择“SQL Server 和Windows身份验证模式”。
可以在“登录审核”选项组中设置登陆的审核方式,其中,4种审核级别决定了登录的安全性,默认选中“仅限失败的登录”单选按钮。
用户可以在“服务器代理账户”选项组中选择是否启动“服务器代理账户”选项来实现代理账户登录;(4)所有设置完成后,单击“确定”完成登录验证模式的设置。
图1 选择“属性”命令图2 服务器属性的安全性2. 创建登陆账号2.1 创建使用Windows身份验证的登陆账号User1(1)首先确认登陆账号User1是否是已存在的Windows中的用户账号。
若不是,则立即在操作系统中创建此用户账号。
(2)在SSMS中,展开“安全性”节点,右击“登录名”,选择“新建登录名”命令,如图3所示。
图3(3)在“常规”选项界面中,单击“登录名”输入框右侧的“搜索”按钮,弹出“选择用户或组”对话框,在“输入要选择的对象名称”文本框中输入User1后单击“确定”按钮;选中“Windows身份验证”单选按钮,其它选择为默认项,如图4所示。
图 4(4)单击“确定”按钮,完成SQL Server登陆账号User1的创建。
(5)刷新登录名,可以发现User1已经存在,并可查看其属性,如图5所示。
图 5(6)验证用User1账号登录SQL Server:首先在操作系统中注销当前用户的登录,然后用User1账号登录操作系统,再用此账号User1连接SQL Server服务器,可以进入SSMS。
2.2 创建使用SQL Server身份验证的登陆账号User2,设置可访问数据库MY_database(1)选择“开始”->“管理工具”->“本地安全策略”,进入“本地安全设置”窗口。
展开“账户策略”,选择“密码策略”,设置好“密码策略”中各项的属性,如图6所示;(2)以“Windows身份验证模式”登录到SSMS管理界面;(3)展开“安全性”节点,右击“登录名”,在弹出的快捷菜单中选择“新建登录名”命令,如图7所示;(4)在新建登录名界面“常规”选项界面中,输入登录名,选中“SQL Server身份验证”单选按钮,在“密码”文本框中输入符合密码策略的密码,并对账号密码安全性原则的相关属性进行设置,在“默认数据库”下拉列表框中选择MY_database选项,如图8所示;(5)在“用户映射”选项界面中,选中MY_database复选框,如图9所示;(6)单击“确定”,完成登录名的新建和强密码的设置。
(7)刷新“登录名”,可以看到User2已经存在,如图10所示。
(8)验证用User2账号登录SQL Server:同2.1,如图11所示。
图6 本地安全设置的密码策略图7新建登录名图8 设置登陆常规属性图9 用户映射图10图11 用User2账号登录SQL Server3. 创建数据库用户3.1 为登录账号User1创建访问当前服务器实例中数据库MY_database的用户账号(1)启动SSMS,展开“安全性”,选择“登录名”选项。
(2)在右窗口“摘要”中右击User1,在弹出的快捷菜单中选择“属性”选项,如图 3.1所示,打开“User1登录属性”对话框,选择“用户映射”选项。
(3)在“映射到此登录名的用户”中选择数据库MY_database,可以看到在用户单元格中显示出“KEX1CH0Y87IORHE\User1”,即为数据库MY_database的用户名,如图3.2所示。
图3.1 User2图3.2 User1登录属性(4)单击“确定”按钮,完成数据库用户User1的创建,该用户可以访问当前服务器实例中的所有数据库。
3.2 为登录账号User2创建访问当前服务器实例中所有数据库的用户账号(1)启动SSMS,展开“安全性”,选择“登录名”选项。
(2)在右窗口“摘要”中右击User2,在弹出的快捷菜单中选择“属性”选项,打开“User2登录属性”对话框,选择“用户映射”选项。
(3)在“映射到此登录名的用户”中选择所有数据库,可以看到在所有数据库的“用户”列表中显示出“User2”,即为所有数据库的用户名,如图3.3所示。
(4)单击“确定”按钮,完成数据库用户User2的创建,该用户可以访问当前服务器实例中的所有数据库。
图3.3 用户映射4. 管理权限通过SSMS赋予新建用户查询MY_database数据库权限:(1)根据以上内容新建一个SQL Server用户,例如User3,以该用户身份登录到SSMS。
(2)单击“新建查询”按钮,打开查询分析界面,输入代码:Use MY_database;Select * from Employee;(3)在查询下面会发现有错误出现,证明此用户没有访问权限,如图4.1所示。
(4)展开“数据库”—>“MY_database”—>“安全性”—>”用户”节点,右击“User3”,在弹出的快捷菜单中选择“属性”命令,进入数据库用户常规属性界面。
图4.1 错误提示图4.2 数据库用户界面(5)打开“安全对象”选项界面,进入数据库用户安全对象属性界面,如图4.2所示。
(6)单击“添加”按钮,进入“添加对象”对话框,从中可以选择需要添加的对象类型,如图4.3所示。
图4.3 添加对象对话框图4.4 选择对象类型(7)选择“特定对象”单选按钮,单击“确定”按钮,进入“选择对象”对话框,从中可以通过选择对象类型来进行过滤。
(8)单击“对象类型”按钮,进入“选择对象类型”对话框,从中可以选择要赋予权限的对象类型;选中“表”复选框,如图4.4所示。
图4.5 查找对象图4.6 授予权力(9)单击“确定”按钮,返回到“选择对象”对话框。
(10)单击“浏览”按钮,进入“查找对象”对话框,其中罗列了当前可以赋予权限的表。
(11)选中“[dbo].[Employee]”复选框,如图4.5所示,单击“确定”按钮,返回到“选择对象”对话框。
(12)单击“确定”按钮,返回到数据库用户安全对象属性界面,从中可以对选择的对象赋予相关的权限。
(13)对表Employee,在权限列表中的select项,如图4.6所示,选中“授予”复选框,单击“确定”按钮,完成对Employee表的查询权限操作。
(14)再次运行(2)中的代码,查看结果,如图4.7所示。
图4.7 查询成功5. 角色通过SSMS创建一个拥有创建表权限的SQL Server数据库角色:(1)建立一个SQL Server用户SQLUser。
(2)以Windows管理员身份登录到SSMS上,展开“数据库”->“MY_database”->“安全性”->“角色”节点,右击“数据库角色”,在弹出的快捷菜单中选择“新建数据库角色”命令。
(3)进入新建数据库角色常规属性界面,在“角色名称”文本框中输入people,如图5.1所示。
(4)单击“所有者”文本框后的“搜索”按钮,进入“选择数据库用户或角色”对话框,单击“浏览”按钮,进入“查找对象”对话框,选中dbo复选框,如图5.2所示。
(5)单击“确定”按钮,返回“选择数据库用户或角色”对话框,单击“确定”按钮,返回新建数据库角色常规属性界面。
(6)在“此角色拥有的架构”列表框中,选中people复选框,在“此角色的成员”列表框中,单击“添加”按钮,进入“选择数据库用户或角色”;单击“浏览”按钮,进入“查找对象”对话框,选中SQLUser复选框,如图5.3所示。
(7)单击“确定”按钮,返回“选择数据库用户或角色”对话框,单击“确定”按钮,返回新建数据库角色常规属性界面。
(8)单击“安全对象”选项,进入新建数据库角色安全对象属性界面。
图5.1 新建数据库角色常规属性界面图5.2查找对象图5.3 常规属性界面配置(9)单击“安全对象”选项界面中的“添加”按钮,进入“添加对象”复选框;选中“特定对象”复选框,单击“确定”按钮,进入“选择对象”对话框。
(10)单击“对象类型”按钮,进入“选择对象类型”对话框,选中“数据库”复选框,单击“确定”按钮,返回“选择对象”对话框。
(11)单击“浏览”按钮,进入“查找对象”对话框,选中MY_database复选框,单击“确定”按钮,返回“选择对象”对话框,如图5.4所示。
(12)单击“确定”按钮,返回安全对象属性界面。
此时,在这个界面中,可以选择相关的权限赋予角色。
(13)在“MY_database的显示权限”列表框中,选中create table的“授予”复选框,如图5.5所示,单击“确定”按钮,完成创建数据库角色并添加用户成员的操作。
(14)以SQLUser身份登录到SSMS,在查询分析器界面输入如下代码,并查看运行结果,如图5.6所示:Use MY_databasegoCreate table people.Employee1(Id int,Name char(20))goInsert into people. Employee1(Id, name) values(100,’king’)goSelect * from people. Employee1Go图5.4 选择对象对话框图5.5 MY_database的显示权限设置图5.6 代码运行结果6. 使用SQL对数据进行安全性控制,包括:授权和回收(1)授权与回收A.建立用户U1、U2、U3、U4、U5、U6、U7,用户类型Connect;B.在SYSTEM(即DBA)与七个Connect用户之间进行授权:·把查询Student表的权限授给用户U1,如图6.1所示;·把对Student表和Course表的全部操作权限授予用户U2和U3,如图6.2所示;·把对表SC的查询权限授予所有用户,如图6.3所示;·把查询Student表和修改学生学号的权限授给用户U4,如图6.4所示;图6.1把查询Student表的权限授给用户U1图6.2(a)把对Student表的全部操作权限授予用户U2和U3图6.2(b)把对Course表的全部操作权限授予用户U2和U3图6.3把对表SC的查询权限授予所有用户图6.4把查询Student表和修改学生学号的权限授给用户U4图6.5把对表SC的INSERT权限授予U5,并允许U5将此权限再授予其他用户图6.6用户U5将对表SC的INSERT权限授予U6,并允许将全线转授其他用户图6.7用户U6将对表SC的INSERT权限授予U7·把对表SC的INSERT权限授予U5,并允许U5将此权限再授予其他用户,如图6.5所示;·用户U5将对表SC的INSERT权限授予U6,并允许将全线转授其他用户,如图6.6所示;·用户U6将对表SC的INSERT权限授予U7,如图6.7所示;C.在授权之后验证用户是否拥有了相应的权限(执行完上面七个语句后,可以分别以不同用户的身份登录数据库,进行相关操作,检查系统是否许可):·U4更新Student表的学生学号,如图6.8所示;·U7向SC表中插入一条数据(’95020’,’20’,88),如图6.9所示;D.回收权限:·收回用户U4修改学生学号的权限,如图6.10所示;·收回所有用户对表SC的查询权限,如图6.11所示;·收回用户U5对SC表的INSERT权限,如图6.12所示;·在回收权限之后验证用户是否真正丧失了改权限:用户U3查询表SC,如图6.13所示;图6.8(a)U4更新Student表的学生学号图6.8(a)新的Student表图6.9(a)U7向SC表中插入数据图6.9(b)新的SC表图6.10收回用户U4修改学生学号的权限图6.11收回所有用户对表SC的查询权限图6.12 收回用户U5对SC表的INSERT权图6.13用户U3查询表SC(2)数据库角色用户组的创建与授权·创建用户组G1,如图6.14所示;·给用户组授权,使得用户组G1拥有对Student表的SELECT、UPDATE、INSERT的权限,如图6.15所示;·将用户U1、U3、U7添加到用户组G1中来,如图6.16所示;·对用户组G1的权限进行修改,增加对Student表的DELETE权限,如图6.17所示,并回收对Student表的INSERT权限,如图6.18所示; ·删除用户组G1,如图6.19所示。