【SQL】基础实验7——SQLServer安全管理

 

一、实验目的

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'

结果:

【SQL】基础实验7——SQLServer安全管理_第1张图片

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

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第2张图片

【SQL】基础实验7——SQLServer安全管理_第3张图片

分析:with grant option语句用于允许将权限转移给其他用户。


2.以log1的身份管理用户log2:以log1的身份连接SQL Server服务器,将其对表Employees拥有的select权限转移给用log2。

方法:

use HrSystem

go

grant select on Employees to log2

go

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第4张图片

【SQL】基础实验7——SQLServer安全管理_第5张图片

分析:grant为授予权限关键字,待授予的权限依次位于其后面,多个权限之间使用逗号隔开。


3.以sa的身份管理用户log1:拒绝用户log1对表Employees的delete权限。

方法:

use HrSystem

go

deny delete on Employees to log1

go

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第6张图片

分析:拒接用户权限时,使用deny关键字。


4.以sa的身份管理用户log1:拒绝用户log1对表Departments的列Dep_id的update权限。

方法:

use HrSystem

go

deny update(Dep_id)on Departments to log1 cascade

go

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第7张图片

【SQL】基础实验7——SQLServer安全管理_第8张图片

分析:拒绝用户对表的特定列的权限,可以将该列写入对应权限的括号中。


5.以sa的身份管理用户log2:授予用户log2创建表的权限,拒绝其创建视图的权限。

方法:

use HrSystem

go

grant create table to log2

deny create view to log2

go

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第9张图片

分析:授予或拒绝用户权限,都将该权限写入授予或是拒绝关键字后。


6.以log2的身份连接服务器,分别执行创建表和创建视图语句, 检查第5题的权限管理的正确性。当执行创建视图的语句时,给出的提示信息是什么?

方法:

use HrSystem

go

/*创建表测试语句*/

create table Mytable

(one int primary key,

two char(10))

go

/*创建视图测试语句*/

create view Myview

as

select * fromEmployees

go

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第10张图片

分析:验证某一用户的权限时,要使用该用户登陆,以其身份去操作。


7.以sa的身份管理用户log2:废除用户log2的所有语句权限。

方法:

use HrSystem

go

revoke all fromlog2

go

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第11张图片

【SQL】基础实验7——SQLServer安全管理_第12张图片

分析:语句中all表示授予或是废除所有的权限,这里为废除。


8.以sa的身份管理用户log1:废除用户log1对表Employees的select权限。同时废除log1授予log2的该权限(在第2题实现的授权)。

方法:

use HrSystem

go

revoke select on Employees from log1 cascade

go

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第13张图片

【SQL】基础实验7——SQLServer安全管理_第14张图片

分析: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

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第15张图片

【SQL】基础实验7——SQLServer安全管理_第16张图片

分析: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

步骤及结果:

【SQL】基础实验7——SQLServer安全管理_第17张图片

分析:一个角色代表单位中的一类工作人员,为角色授予权限后,即可通过添加或者删除成员来实现对用户权限的管理。

 

三、实验小结【对自己而言,通过实验学到的关键技术方法】

1、SQL安全管理模型包括SQL Server登录、数据库用户、权限和角色四个主要方面;

2、SQL权限分为:对象权限、语句权限和暗示性权限(不必授予就有的)三种类型;

3、设置权限包括授予、拒绝和废除权限三种,其中暗示性权限不需要设置;

4、SQL角色包括固定服务器和角色和数据库角色,其中数据库觉得又分为固定数据库角色和用户自定义角色;

5、使用CREATE ROLE语句创建角色,后面参数依次为‘角色名’WITH‘密码’。

 

智者乐水,仁者乐山,幸福之人关注理工科日记

获取原文文档请关注“理工科日记”,回复数据库获取。

你可能感兴趣的:(SQL数据库基础实验)