一、實驗目的
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‘密碼’。
智者樂水,仁者樂山,幸福之人關注“理工科日記”
獲取原文文檔請關注“理工科日記”,回覆數據庫獲取。