SQLServer中服务器角色和数据库角色权限详解角色
當(dāng)幾個(gè)用戶需要在某個(gè)特定的數(shù)據(jù)庫中執(zhí)行類似的動(dòng)作時(shí)(這里沒有相應(yīng)的Windows用戶組),就可以向該數(shù)據(jù)庫中添加一個(gè)角色(role)。數(shù)據(jù)庫角色指定了可以訪問相同數(shù)據(jù)庫對(duì)象的一組數(shù)據(jù)庫用戶。
數(shù)據(jù)庫角色的成員可以分為如下幾類:
Windows用戶組或用戶賬戶
SQL?Server登錄
其他角色
SQL?Server的安全體系結(jié)構(gòu)中包括了幾個(gè)含有特定隱含權(quán)限的角色。除了數(shù)據(jù)庫擁有者創(chuàng)建的角色之外,還有兩類預(yù)定義的角色。這些可以創(chuàng)建的角色可以分為如下幾類:
固定服務(wù)器
固定數(shù)據(jù)庫
用戶自定義
固定服務(wù)器
由于固定服務(wù)器是在服務(wù)器層次上定義的,因此它們位于從屬于數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫外面。下表列出了所有現(xiàn)有的固定服務(wù)器角色。
固定服務(wù)器角色 | 說??? 明 |
sysadmin | 執(zhí)行SQL?Server中的任何動(dòng)作 |
serveradmin | 配置服務(wù)器設(shè)置 |
setupadmin | 安裝復(fù)制和管理擴(kuò)展過程 |
securityadmin | 管理登錄和CREATE DATABASE的權(quán)限以及閱讀審計(jì) |
processadmin | 管理SQL?Server進(jìn)程 |
dbcreator | 創(chuàng)建和修改數(shù)據(jù)庫 |
diskadmin | 管理磁盤文件 |
下面兩個(gè)系統(tǒng)過程用來添加或刪除固定服務(wù)器角色成員:
sp_addsrvrolemember
sp_dropsrvrolemember
注意:您不能添加、修改或刪除固定服務(wù)器角色。另外,只有固定服務(wù)器角色的成員才能執(zhí)行上述兩個(gè)系統(tǒng)過程來從角色中添加或刪除登錄賬戶。
sa登錄
sa登錄是系統(tǒng)管理員的登錄。在以前的SQL?Server版本中不存在角色,sa登錄具有所有可能的關(guān)于系統(tǒng)管理工作的權(quán)限。在SQL?Server 2005中,sa登錄保持了向后兼容性。sa登錄永遠(yuǎn)是固定服務(wù)器角色syadmin中的成員,并且不能從該角色中刪除。
注意:只有當(dāng)沒有其他方法登錄到SQL?Server系統(tǒng)中時(shí),再使用sa登錄。
固定服務(wù)器角色及其權(quán)限
在某個(gè)SQL?Server系統(tǒng)中,每個(gè)固定服務(wù)器角色都有其隱含的權(quán)限。使用系統(tǒng)過程sp_srvrolepermission可以瀏覽每個(gè)固定服務(wù)器角色的權(quán)限。該系統(tǒng)過程的語法形式為:
sp_srvrolepermission[[@srvrolename =] 'role']
如果沒有指定role的值,那么所有的固定服務(wù)器角色的權(quán)限都將顯示出來。下面的部分將討論每個(gè)固定服務(wù)器角色的權(quán)限。
1. sysadmin
固定服務(wù)器角色sysadmin的成員被賦予了SQL?Server系統(tǒng)中所有可能的權(quán)限。例如,只有這個(gè)角色中的成員(或一個(gè)被這個(gè)角色中的成員賦予了CREATE DATABASE權(quán)限的用戶)才能夠創(chuàng)建數(shù)據(jù)庫。
固定服務(wù)器角色和sa登錄之間有著特殊的關(guān)系。sa登錄一直都是固定服務(wù)器角色中的成員,并且不能從該角色中刪除。
2. serveradmin
固定服務(wù)器角色serveradmin的成員可以執(zhí)行如下的動(dòng)作:
向該服務(wù)器角色中添加其他登錄
運(yùn)行dbcc pintable命令(從而使表常駐于主內(nèi)存中)
運(yùn)行系統(tǒng)過程sp_configure(以顯示或更改系統(tǒng)選項(xiàng))
運(yùn)行reconfigure選項(xiàng)(以更新系統(tǒng)過程sp_configure所做的所有改動(dòng))
使用shutdown命令關(guān)掉數(shù)據(jù)庫服務(wù)器
運(yùn)行系統(tǒng)過程sp_tableoption為用戶自定義表設(shè)置選項(xiàng)的值
3. setupadmin
固定服務(wù)器角色setupadmin中的成員可以執(zhí)行如下的動(dòng)作:
向該服務(wù)器角色中添加其他登錄
添加、刪除或配置鏈接的服務(wù)器
執(zhí)行一些系統(tǒng)過程,如sp_serveroption
4. securityadmin
固定服務(wù)器角色securitypadmin中的成員可以執(zhí)行關(guān)于服務(wù)器訪問和安全的所有動(dòng)作。這些成員可以進(jìn)行如下的系統(tǒng)動(dòng)作:
向該服務(wù)器角色中添加其他登錄
讀取SQL?Server的錯(cuò)誤日志
運(yùn)行如下的系統(tǒng)過程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有這些系統(tǒng)過程都與系統(tǒng)安全相關(guān)。)
5. processadmin
固定服務(wù)器角色processadmin中的成員用來管理SQL?Server進(jìn)程,如中止用戶正在運(yùn)行的查詢。這些成員可以進(jìn)行如下的動(dòng)作:
向該服務(wù)器角色中添加其他登錄
執(zhí)行KILL命令(以取消用戶進(jìn)程)
6. dbcreator
固定服務(wù)器角色dbcreator中的成員用來管理與數(shù)據(jù)庫創(chuàng)建和修改有關(guān)的所有動(dòng)作。這些成員可以進(jìn)行如下的動(dòng)作:
向該服務(wù)器角色中添加其他登錄
運(yùn)行CREATE DATABASE和ALTER DATABASE語句
使用系統(tǒng)過程sp_renamedb來修改數(shù)據(jù)庫的名稱
7. diskadmin
固定服務(wù)器角色diskadmin的成員可以進(jìn)行如下與用來存儲(chǔ)數(shù)據(jù)庫對(duì)象的文件和文件組有關(guān)的動(dòng)作:
向該服務(wù)器角色中添加其他登錄
運(yùn)行如下系統(tǒng)過程:sp_ddumpdevice和sp_dropdevice。
運(yùn)行DISK INIT語句
固定數(shù)據(jù)庫角色
固定數(shù)據(jù)庫角色在數(shù)據(jù)庫層上進(jìn)行定義,因此它們存在于屬于數(shù)據(jù)庫服務(wù)器的每個(gè)數(shù)據(jù)庫中。下表列出了所有的固定數(shù)據(jù)庫角色。
固定數(shù)據(jù)庫角色 | 說??? 明 |
db_owner | 可以執(zhí)行數(shù)據(jù)庫中技術(shù)所有動(dòng)作的用戶 |
db_accessadmin | 可以添加、刪除用戶的用戶 |
db_datareader | 可以查看所有數(shù)據(jù)庫中用戶表內(nèi)數(shù)據(jù)的用戶 |
db_datawriter | 可以添加、修改或刪除所有數(shù)據(jù)庫中用戶表內(nèi)數(shù)據(jù)的用戶 |
db_ddladmin | 可以在數(shù)據(jù)庫中執(zhí)行所有DDL操作的用戶 |
db_securityadmin | 可以管理數(shù)據(jù)庫中與安全權(quán)限有關(guān)所有動(dòng)作的用戶 |
db_backoperator | 可以備份數(shù)據(jù)庫的用戶(并可以發(fā)布DBCC和CHECKPOINT語句,這兩個(gè)語句一般在備份前都會(huì)被執(zhí)行) |
db_denydatareader | 不能看到數(shù)據(jù)庫中任何數(shù)據(jù)的用戶 |
db_denydatawriter | 不能改變數(shù)據(jù)庫中任何數(shù)據(jù)的用戶 |
除了上表中列出的固定數(shù)據(jù)庫角色之外,還有一種特殊的固定數(shù)據(jù)庫角色,名為public,這里將首先介紹這一角色。
public角色
public角色是一種特殊的固定數(shù)據(jù)庫角色,數(shù)據(jù)庫的每個(gè)合法用戶都屬于該角色。它為數(shù)據(jù)庫中的用戶提供了所有默認(rèn)權(quán)限。這樣就提供了一種機(jī)制,即給予那些沒有適當(dāng)權(quán)限的所有用戶以一定的(通常是有限的)權(quán)限。public角色為數(shù)據(jù)庫中的所有用戶都保留了默認(rèn)的權(quán)限,因此是不能被刪除的。
一般情況下,public角色允許用戶進(jìn)行如下的操作:
使用某些系統(tǒng)過程查看并顯示master數(shù)據(jù)庫中的信息
執(zhí)行一些不需要一些權(quán)限的語句(例如PRINT)
固定數(shù)據(jù)庫角色及其權(quán)限
在數(shù)據(jù)庫中,每個(gè)固定數(shù)據(jù)庫角色都有其特定的權(quán)限。這就意味著對(duì)于某個(gè)數(shù)據(jù)庫來說,固定數(shù)據(jù)庫角色的成員的權(quán)限是有限的。使用系統(tǒng)過程sp_dbfixedrolepermission就可以查看每個(gè)固定數(shù)據(jù)庫角色的權(quán)限。該系統(tǒng)過程的語法為:
sp_db.xedrolepermission [[@rolename =] 'role']
如果沒有指定role的值,那么所有固定數(shù)據(jù)庫角色的權(quán)限都可以顯示出來。下面的幾節(jié)將討論每個(gè)固定數(shù)據(jù)庫角色的權(quán)限。
1. db_owner
固定數(shù)據(jù)庫角色db_owner的成員可以在特定的數(shù)據(jù)庫中進(jìn)行如下的動(dòng)作:
向其他固定數(shù)據(jù)庫角色中添加成員,或從其中刪除成員
運(yùn)行所有的DDL語句
運(yùn)行BACKUP DATABASE和BACKUP LOG語句
使用CHECKPOINT語句顯式地啟動(dòng)檢查點(diǎn)進(jìn)程
運(yùn)行下列dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage
授予、取消或剝奪每一個(gè)數(shù)據(jù)庫對(duì)象上的下列權(quán)限:SELECT、INSERT、UPDATE、DELETE和REFERENCES
使用下列系統(tǒng)過程向數(shù)據(jù)庫中添加用戶或角色:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember、sp_dropuser、sp_grantdbaccess
使用系統(tǒng)過程sp_rename為任何數(shù)據(jù)庫對(duì)象重新命名
2. db_accessadmin
固定數(shù)據(jù)庫角色db_accessadmin的成員可以執(zhí)行與數(shù)據(jù)庫訪問有關(guān)的所有動(dòng)作。這些角色可以在具體的數(shù)據(jù)庫中執(zhí)行下列操作:
運(yùn)行下列系統(tǒng)過程:sp_addalias、sp_dropalias、sp_dropuser、sp_grantdbacess、sp_revokedbaccess
為Windows用戶賬戶、Windows組和SQL?Server登錄添加或刪除訪問
3. dbdatareader
固定數(shù)據(jù)庫角色dbdatareader的成員對(duì)數(shù)據(jù)庫中的數(shù)據(jù)庫對(duì)象(表或視圖)具有SELECT權(quán)限。然而,這些成員不能把這個(gè)權(quán)限授予其他任何用戶或角色。(這個(gè)限制對(duì)REVOKE語句來說同樣成立。)
4. dbdatawriter
固定數(shù)據(jù)庫角色dbdatawriter的成員對(duì)數(shù)據(jù)庫中的數(shù)據(jù)庫對(duì)象(表或視圖)具有INSERT、UPDATE和DELETE權(quán)限。然而,這些成員不能把這個(gè)權(quán)限授予其他任何用戶或角色。(這個(gè)限制對(duì)REVOKE語句來說也同樣成立。)
5. db_ddladmin
固定數(shù)據(jù)庫角色db_ddladmin的成員可以進(jìn)行如下的動(dòng)作:
運(yùn)行所有DDL語句
對(duì)任何表上授予REFERENCESE權(quán)限
使用系統(tǒng)過程sp_procoption和sp_recompile來修改任何存儲(chǔ)過程的結(jié)構(gòu)
使用系統(tǒng)過程sp_rename為任何數(shù)據(jù)庫對(duì)象重命名
使用系統(tǒng)過程sp_tableoption和sp_changeobjectowner分別修改表的選項(xiàng)和任何數(shù)據(jù)庫對(duì)象的擁有者
6. db_securityadmin
固定數(shù)據(jù)庫角色db_securityadmin的成員可以管理數(shù)據(jù)庫中的安全。這些成員可以進(jìn)行如下的動(dòng)作:
運(yùn)行與安全有關(guān)的所有Transact-SQL語句(GRANT、DENY和REVOKE)
運(yùn)行以下系統(tǒng)過程:sp_addapprole、sp_addrole、sp_addrolemember、sp_approlepassword、sp_changeobjectowner、sp_dropapprole、sp_droprole、sp_droprolemember
7. db_backupoperator
固定數(shù)據(jù)庫角色db_backupoperator的成員可以管理數(shù)據(jù)庫備份的過程。這些成員可以進(jìn)行如下動(dòng)作:
運(yùn)行BACKUP DATABASE和BACKUP LOG語句
用CHECKPOINT語句顯式地啟動(dòng)檢查點(diǎn)進(jìn)程
運(yùn)行如下dbcc命令:dbcc checkalloc、dbcc checkcatalog、dbcc checkdb、dbcc updateusage
8. db_denydatareader和db_denydatawriter
顧名思義,固定數(shù)據(jù)庫角色db_denydatareader的成員對(duì)數(shù)據(jù)庫中的數(shù)據(jù)庫對(duì)象(表或視圖)沒有SELECT權(quán)限。如果數(shù)據(jù)庫中含有敏感數(shù)據(jù)并且其他用戶不能讀取這些數(shù)據(jù),那么就可以使用這個(gè)角色。
固定數(shù)據(jù)庫角色db_denydatawriter的成員對(duì)數(shù)據(jù)庫中的任何數(shù)據(jù)庫對(duì)象(表或視圖)沒有INSERT、UPDATE和DELETE權(quán)限。
總結(jié)
以上是生活随笔為你收集整理的SQLServer中服务器角色和数据库角色权限详解角色的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ANSYS APDL学习(8):选取全部
- 下一篇: 小记 百度地图 soso地图 经纬度偏移