数据库安全管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南石油大学实验报告
一、实验课时:2
二、实验目的
(1) 掌握使用T-SQL语句创建登录帐户的方法。
(2) 掌握使用T-SQL语句创建数据库用户的方法。
(3) 掌握使用T-SQL语句创建数据库角色的方法。
(4) 掌握使用T-SQL语句管理数据库用户权限方法。
三、实验要求
(1) 使用SQL Server 2008查询分析器。
(2) 严格依照操作步骤进行。
四、实验环境
(1) PC机。
(2) SQL Server 2008。
五、实验内容及步骤
注意事项:
(1)首先在C盘根目录创建文件夹Bluesky,执行脚本文件“PracticePre-第11章安全管理.sql”,创建数据库BlueSkyDB和表;
(2)如何建立“数据库引擎查询”;
(3)使用“select user_name()”可查询当前登录账号在当前数据库中的用户名。
TUser3,初始密码均为“123456”。
步骤2 使用TUser1建立一个新的数据库引擎查询,在“可用数据库”下拉列表框中是否能看到并选中BlueSkyDB数据库?为什么?
可以看到数据库BlueSkyDB但是不能选中打开,因为用户仅仅是能够使用服务器的合法用户,但不能访问数据库
映射为数据库BlueSkyDB的用户,用户名同登录名。
步骤4 再次使用TUser1建立一个新的数据库引擎查询,这次在“可用数据库”下拉列表框中是否能看到并选中BlueSkyDB数据库?为什么?
能够选中BlueSkyDB,因为TUser1已经成为该数据库的合法用户了
步骤5 用TUser1用户在BlueSkyDB数据库中执行下述语句,能否成功?为什么?
SELECT * FROM BOOKS;
不能成功,因为该用户没有对数据库操作的权限。
步骤6 授予TUser1具有对BOOKS表的查询权限,授予TUser2具有对CUSTOMERS表的插入权限。
步骤7 用TUser2建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?
INSERT INTO CUSTOMERS VALUES('张三','zhang@','123456'); (注意:CUSTOMERS表中的customerID列为自增列)
能成功,因为TUser2具有对customer表插入数据的权限
再执行下述语句,能否成功?为什么?
SELECT * FROM CUSTOMERS;
不能,因为TUser2仅有对customer表插入的权限,但没有查询的权限。
步骤8 在TUser1用户建立的数据库引擎查询中,再次执行下述语句:SELECT * FROM BOOKS;
可以执行,因为TUser1有对表BOOKS查询的权限。
这次能否成功?但如果执行下述语句:
INSERT INTO CUSTOMERS VALUES('李四','li@','123456'); 能否成功?为什么?
步骤9 授予TUser3具有在BlueSkyDB数据库中的建表权限。
步骤10 使用Transact-SQL在数据库BlueSkyDB中创建一个角色TRole1,并使用Transact-SQL将对BlueSkyDB数据库中Books表的增、删、改、查权限授予角色TRole1。
步骤11 新建立一个SQL SERVER身份验证模式的登录名:pub_user,并让该登录名成为BlueSkyDB数据库中的合法用户(非常重要,否则后面无法将其加入TRole1角色)
步骤12 用pub_user建立一个新的数据库引擎查询,执行下述语句,能否成功?为什么?
SELECT * FROM BOOKS;
不能成功,因为pub_user没有任何对数据库BlueSkyDB操作的权限。
步骤13 将pub_user用户添加到TRole1角色中。
步骤14 在pub_user建立的数据库引擎查询中,再次执行下述语句,能否成功?为什么?
SELECT * FROM BOOKS;
能成功,应为pub_user属于TRole的角色,而TRole角色具有对books表的增删改查的权限。
步骤15 使用Transact-SQL将对BlueSkyDB数据库中Books表的删除、更新和查询的权限从角色TRole1处回收回来。
步骤16在pub_user建立的数据库引擎查询中,再次执行下述语句,能否成功?为什么?
SELECT * FROM BOOKS;
因为删除了TRole1删除,更新和查询的权限,而pub_user是属于TRole1用户的,所以,pub_user拥有与TRole1一样的权限,仅仅能忘books表中插入数据。
六、收获,体会及问题
在本次实验中主要是对数据库的安全性进行管理,对于数据库可以创建多个登录名(create login ),通过登录名登录的用户就是数据的的合法用户,但不能对库里的数据库进行查看,不能选中其中的任意数据库,然后是可以对指定数据库创建相应的用户(create user),有了该用户,就能够访问相应的数据库,但是不能对数据库里的内容进行操作,能选中数据库,就是不能操作,为了给用户操作的权限,可以使用grant赋予相应的用户以操作权限,使用revoke收回权限,也可以通过创建角色(create role),将用户添加到角色中(exec add_rolemember),就可以使用户拥有该角色的相应权限。