給sql Server添加一個獨立的用戶名

use tmpdb

go

-- 添加一個登錄名

 

exec sp_addlogin 'userN', '123'

go

 

-- 給登錄分配一個角色

exec sp_addsrvrolemember 'userN', 'sysadmin'

go

 

--  

use tmpdb
go

EXEC sp_addlogin 'un', '123'
go

 

-- 新建一個數據庫用戶

EXEC sp_grantdbaccess 'un', 'unDBUser'
go

 

-- 賦予權限

grant select, delete, insert, update on tab to unDBUser
go

 

/*--示例說明
		示例在數據庫pubs中創建一個擁有表jobs的所有權限、擁有表titles的SELECT權限的角色r_test
	隨後創建了一個登錄l_test,然後在數據庫pubs中爲登錄l_test創建了用戶賬戶u_test
	同時將用戶賬戶u_test添加到角色r_test中,使其通過權限繼承獲取了與角色r_test一樣的權限
	最後使用DENY語句拒絕了用戶賬戶u_test對錶titles的SELECT權限。
	經過這樣的處理,使用l_test登錄SQL Server實例後,它只具有表jobs的所有權限。
--*/

USE pubs

--創建角色 r_test
EXEC sp_addrole 'r_test'

--授予 r_test 對 jobs 表的所有權限
GRANT ALL ON jobs TO r_test
--授予角色 r_test 對 titles 表的 SELECT 權限
GRANT SELECT ON titles TO r_test

--添加登錄 l_test,設置密碼爲pwd,默認數據庫爲pubs
EXEC sp_addlogin 'l_test','pwd','pubs'

--爲登錄 l_test 在數據庫 pubs 中添加安全賬戶 u_test
EXEC sp_grantdbaccess 'l_test','u_test'

--添加 u_test 爲角色 r_test 的成員
EXEC sp_addrolemember 'r_test','u_test'

--拒絕安全賬戶 u_test 對 titles 表的 SELECT 權限
DENY SELECT ON titles TO u_test

/*--完成上述步驟後,用 l_test 登錄,可以對jobs表進行所有操作,但無法對titles表查詢,雖然角色 r_test 有titles表的select權限,但已經在安全賬戶中明確拒絕了對titles的select權限,所以l_test無titles表的select權限--*/

--從數據庫 pubs 中刪除安全賬戶
EXEC sp_revokedbaccess 'u_test'

--刪除登錄 l_test
EXEC sp_droplogin 'l_test'

--刪除角色 r_test
EXEC sp_droprole 'r_test'
exec sp_dropsrvrolemember N'aa', sysadmin
go
exec sp_addsrvrolemember N'aa', securityadmin
go


--作好SQL的安全管理
--作者:鄒建

首先,做好用戶安全:  
 
--簡單的,只允許sql的用戶訪問sql(防止利用administrator組用戶訪問)  
 
1.企業管理器--右鍵SQL實例--屬性--安全性--身份驗證--選擇"sql  server和windows"--確定  
 
2.企業管理器--安全性--登陸--右鍵sa--設置密碼--其他用戶也設置密碼  
 
3.刪除用戶:  
           BUILTIN/Administrators  
           <機器名>/Administrator  --這個用戶不一定有  
   這樣可以防止用windows身份登陸SQL  
 
4.設置進入企業管理器需要輸入密碼  
在企業管理器中  
           --右鍵你的服務器實例(就是那個有綠色圖標的)  
           --編輯SQL Server註冊屬性  
           --選擇"使用 SQL Server 身份驗證"  
           --並勾選"總是提示輸入登錄名和密碼"  
           --確定  
 
--經過上面的設置,你的SQL  Server基本上算是安全了.  

------------------------------------------------------------------------  

 
其次,改默認端口,隱藏服務器,減少被攻擊的可能性  
 
SQL Server服務器  
           --開始  
           --程序  
           --Microsoft  SQL  Server  
           --服務器網絡實用工具  
           --啓用的協議中"TCP/IP"  
           --屬性  
           --默認端口,輸入一個自已定義的端口,比如2433  
           --勾選隱藏服務器  
 
----------------------------------------------------------------------------  


--管好sql的用戶,防止訪問他不該訪問的數據庫(總控制,明細還可以控制他對於某個數據庫的具體對象具有的權限)  
 
--切換到你新增的用戶要控制的數據庫  
use  你的庫名  
go  
 
--新增用戶  
exec  sp_addlogin  'test'            --添加登錄  
exec  sp_grantdbaccess  N'test'            --使其成爲當前數據庫的合法用戶  
exec  sp_addrolemember  N'db_owner',  N'test'            --授予對自己數據庫的所有權限  
 
--這樣創建的用戶就只能訪問自己的數據庫,及數據庫中包含了guest用戶的公共表  
go  
 
--刪除測試用戶  
exec  sp_revokedbaccess  N'test'            --移除對數據庫的訪問權限  
exec  sp_droplogin  N'test'            --刪除登錄  


如果在企業管理器中創建的話,就用:

企業管理器--安全性--右鍵登錄--新建登錄

常規項
--名稱中輸入用戶名
--身份驗證方式根據你的需要選擇(如果是使用windows身份驗證,則要先在操作系統的用戶中新建用戶)
--默認設置中,選擇你新建的用戶要訪問的數據庫名

服務器角色項
這個裏面不要選擇任何東西

數據庫訪問項
勾選你創建的用戶需要訪問的數據庫名
數據庫角色中允許,勾選"public","db_ownew"

確定,這樣建好的用戶與上面語句建立的用戶一樣 
---------------------------------------------------------------------------  

最後一步,爲具體的用戶設置具體的訪問權限,這個可以參考下面的最簡示例: 
 
--添加只允許訪問指定表的用戶:  
exec  sp_addlogin  '用戶名','密碼','默認數據庫名'  
 
--添加到數據庫  
exec  sp_grantdbaccess  '用戶名'
 
--分配整表權限  
GRANT  SELECT ,  INSERT ,  UPDATE ,  DELETE  ON table1 TO [用戶名]

--分配權限到具體的列
GRANT  SELECT ,  UPDATE  ON table1(id,AA) TO [用戶名]
 
發佈了54 篇原創文章 · 獲贊 4 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章