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 [用戶名]