如題,本文簡記一下SQL Sever里面登錄用戶(login)的創建,數據庫用戶(DBUser)的創建,以及給數據庫用戶分配權限(Grant)。
數據庫有三層保護機制:
第一層:登錄用戶以及登錄密碼的保護,比如:你擁有進去小區大門的權限;
第二層:數據庫的權限,比如:小區有很多樓棟,你只擁有進去指定樓棟的權限;
第三層:數據庫操作的權限,比如:你進了指定的樓棟之后,只能做被允許的事情。
第一層里面,用戶登錄分為windows登錄與SQLSever登錄,windows登錄不說,主要說SQLSever登錄。
--第一層:登錄用戶創建--可以進小區了 use master go exec sp_addlogin 'test','123456' --exec sp_droplogin 'test' --刪除登錄用戶 --第二層:數據庫用戶創建--可以進房子了 use TSMS go exec sp_grantdbaccess 'test','testUser01' --exec sp_dropuser 'testUser01' --刪除數據庫用戶 --第三層:權限分配--可以在房子里干一些已被許可的事情了 use TSMS go grant select on Students to testUser01 --revoke select on Students to testUser01 --權限收回
ok,現在知道如何創建與刪除登錄用戶、數據庫用戶、數據庫權限了。繼續補充一點東西,一個登錄用戶如果需要取得多個DB的操作權限,就需要創建多個DBUser,簡單說:一個login可以擁有多個DBUser,每個DBUser對應一個DB。這就可以解釋,在sa賬號下,為什么每個數據庫都有一個dbo(DB Owner)了,這樣sa賬號就可以操作所有數據庫啦!
指定DB→安全性→查看用戶
繼續引入問題:如果登錄用戶超級多,難道要一個一個來給他們賦予權限?那太挫了!SQLSever定義了一組用戶角色來解決這些問題,如下:
角色賦予與刪除:
代碼示例:
--用戶角色管理 use TSMS go exec sp_addrolemember 'db_owner','testUser01' --賦予db_owner權限 exec sp_droprolemember 'db_owner','testUser01' --刪除db_owner權限
代碼經過測試,測試環境:Win10+SQLSever 2014。