一、实验目的
1、掌握使用SQL Server Management Studio管理安全账户、使用T-SQL语句管理登录账户
2、使用T-SQL语句管理数据库用户的权限
二、实验内容、方法和步骤、实验结果与分析【结果情况,碰到什么问题,如何解决的?】
实验内容:
(三)使用Transact-SQL命令管理数据库用户的权限完成以下各题功能,记录或保存实现各功能的Transact-SQL命令。
在实现下列功能前需完成如下四条语句:
sp_addlogin 'log1','1'
/*创建新的SQL Server登陆,其登录名为‘log1’,密码为‘1’*/
sp_grantdbaccess 'log1'
/*将创建的数据库用户添加到当前数据库中*/
sp_addlogin 'log2','1'/*同上*/
sp_grantdbaccess 'log2'
结果:
1.以sa的身份管理用户log1:用GRANT语句授子用户log1对表Employes拥有select insert update权限,并允许用户log1将该权限转移给其他用户。
方法:
use HrSystem
go
grant select,insert,update on Employees to log1 with grant option
go
步骤及结果:
分析:with grant option语句用于允许将权限转移给其他用户。
2.以log1的身份管理用户log2:以log1的身份连接SQL Server服务器,将其对表Employees拥有的select权限转移给用log2。
方法:
use HrSystem
go
grant select on Employees to log2
go
步骤及结果:
分析:grant为授予权限关键字,待授予的权限依次位于其后面,多个权限之间使用逗号隔开。
3.以sa的身份管理用户log1:拒绝用户log1对表Employees的delete权限。
方法:
use HrSystem
go
deny delete on Employees to log1
go
步骤及结果:
分析:拒接用户权限时,使用deny关键字。
4.以sa的身份管理用户log1:拒绝用户log1对表Departments的列Dep_id的update权限。
方法:
use HrSystem
go
deny update(Dep_id)on Departments to log1 cascade
go
步骤及结果:
分析:拒绝用户对表的特定列的权限,可以将该列写入对应权限的括号中。
5.以sa的身份管理用户log2:授予用户log2创建表的权限,拒绝其创建视图的权限。
方法:
use HrSystem
go
grant create table to log2
deny create view to log2
go
步骤及结果:
分析:授予或拒绝用户权限,都将该权限写入授予或是拒绝关键字后。
6.以log2的身份连接服务器,分别执行创建表和创建视图语句, 检查第5题的权限管理的正确性。当执行创建视图的语句时,给出的提示信息是什么?
方法:
use HrSystem
go
/*创建表测试语句*/
create table Mytable
(one int primary key,
two char(10))
go
/*创建视图测试语句*/
create view Myview
as
select * fromEmployees
go
步骤及结果:
分析:验证某一用户的权限时,要使用该用户登陆,以其身份去操作。
7.以sa的身份管理用户log2:废除用户log2的所有语句权限。
方法:
use HrSystem
go
revoke all fromlog2
go
步骤及结果:
分析:语句中all表示授予或是废除所有的权限,这里为废除。
8.以sa的身份管理用户log1:废除用户log1对表Employees的select权限。同时废除log1授予log2的该权限(在第2题实现的授权)。
方法:
use HrSystem
go
revoke select on Employees from log1 cascade
go
步骤及结果:
分析:revoke用于废除(收回)用户权限,待收回权限应在revoke后声明。
9.以sa的身份管理用户log1:废除用户log1对表Employees的所有权限(提示:需要分两步完成)。
方法:
use HrSystem
go
/*第一步*/
revoke grant option for all on Employees from log1 cascade
go
/*第二步*/
revoke all onEmployees from log1
go
步骤及结果:
分析:revoke用于废除(收回)用户权限。
10.以sa的身份管理角色:用系统存储过程在数据库HrSystem中创建角色Myrole,并将log1和log2添加到该角色中。授予角色Myrole具有对表Departments的查询权限。
方法:
use HrSystem
go
exec sp_addrolemyrole
exec sp_addrolemembermyrole,log1
exec sp_addrolemembermyrole,log2
grant select on Departments to myrole
go
步骤及结果:
分析:一个角色代表单位中的一类工作人员,为角色授予权限后,即可通过添加或者删除成员来实现对用户权限的管理。
三、实验小结【对自己而言,通过实验学到的关键技术方法】
1、SQL安全管理模型包括SQL Server登录、数据库用户、权限和角色四个主要方面;
2、SQL权限分为:对象权限、语句权限和暗示性权限(不必授予就有的)三种类型;
3、设置权限包括授予、拒绝和废除权限三种,其中暗示性权限不需要设置;
4、SQL角色包括固定服务器和角色和数据库角色,其中数据库觉得又分为固定数据库角色和用户自定义角色;
5、使用CREATE ROLE语句创建角色,后面参数依次为‘角色名’WITH‘密码’。
智者乐水,仁者乐山,幸福之人关注“理工科日记”
获取原文文档请关注“理工科日记”,回复数据库获取。