數據庫實驗二

數據庫登陸名和數據庫用戶名

聯繫如下:

登錄名可以理解爲進入整個大樓的鑰匙,用戶名可以理解爲一個房間的鑰匙。這裏所說的大樓就是sql server服務器,而房間就是這個sql server服務器中的具體的庫。

區別如下:

1、映射關係不同

一個登錄名可以和多個不同庫下的用戶做映射。

在同一個庫下只能和一個用戶做映射,並且一個用戶名可以和多個登錄名有映射關係。
就是一個登錄名在一個數據庫下面只能映射一個用戶名,而在不同數據庫下面可以創造不同的用戶名。一個登錄名可以登錄多個數據庫。

2、權限不同

真正有權限的是用戶名,登錄名只有登進數據庫的功能,然後去找映射的用戶名,這樣就有了相應的權限。

–查找當前的數據庫的用戶名
SELECT DP.name as[user_name],SP.name as [logion_name]
FROM ST.sys.database_principals DP ,ST.sys.server_principals SP
WHERE SP.sid = DP.sid (其中ST爲當下的數據庫名)

數據庫安全性

數據庫賬戶的添加、刪除
對賬戶進行授予權限、收回權限。

1.create login kang with password=‘a@123456’, default_database=ST;–創建登陸賬戶,默認連接到ST的數據庫。

2.create user kang for login kang with default_schema=dbo;–創建數據庫用戶,並且指定scheme爲dbo,這意味着 用戶“kang” 在執行“select * from t”,實際上執行的是 “select * from dbo.t”。
–如果一個用戶me創建了一個table表,另一個用戶you調用table時,要用me.table,如果你不知道是哪個用戶,但是如果你指定dbo,只需要用dbo.table.

3.exec sp_addrolemember ‘db_owner’, ‘kang’;–通過加入數據庫角色,賦予數據庫用戶“kang”權限,此時,kang 就可以全權管理數據庫 ST 中的對象了。
–刪除數據庫用戶角色
exec sp_droprolemember ‘db_owner’,‘sharkUser01’
也可以使用
grant select,update,insert on 數據表名稱 to 用戶名
revoke select,update,insert on student from qiang;
添加具體的權限
4. SELECT DP.name as[user_name],SP.name as [logion_name]
FROM ST.sys.database_principals DP ,ST.sys.server_principals SP
WHERE SP.sid = DP.sid --查找當前的數據庫的用戶名

  1. exec sp_helprotect @username=‘qiang’;查看qiang用戶的權限

  2. revoke select,update,insert on student from qiang;刪除qiang這個用戶對student表的某些權限

  3. drop login qiang;–刪除數據庫登陸賬戶
    zhe在這裏插入圖片描述
    這個是數據庫用戶角色,對應第三點。
    在賦予權限的時候,必須在管理員權限下。

(2)觸發器,存儲過程的使用
創建存儲過程並執行

在這裏插入圖片描述
在執行存儲過程中,output關鍵字必須加,不然會打印不出來。
而且不能不用print打印@num1,不然也會打印不出來。

創建觸發器並測試效果

在這裏插入圖片描述

(3)數據庫備份與恢復
對所創建的數據庫進行備份,利用備份進行數據庫恢復
在這裏插入圖片描述是如果數據庫多個客戶端在連接,在還原之前,首先要把數據庫的連接方式設置爲單一連接。

在這裏插入圖片描述

如果出現這個報錯,你需要選擇覆蓋現有的數據庫。

在這裏插入圖片描述
在這裏插入圖片描述

實驗小結:

  1. 在第一個實驗中,創建賬戶後,必須更改連接,切換用戶。對用戶授權必須在有管理員權限的情況下才能對新建用戶更改權限。
  2. 在第二個小實驗的時候,又犯了外鍵插入錯誤。
  3. 對用戶名和登錄名的理解。
發佈了20 篇原創文章 · 獲贊 11 · 訪問量 3692
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章