數(shù)據(jù)庫安全性_第1頁
數(shù)據(jù)庫安全性_第2頁
數(shù)據(jù)庫安全性_第3頁
數(shù)據(jù)庫安全性_第4頁
數(shù)據(jù)庫安全性_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第7章 SQL Server的安全性管理 7. 1 SQL Server 2005的驗證模式7. 2 登錄管理7. 3 用戶管理7. 4 角色管理7. 5 許可管理 綜合練習(xí) 返回目錄數(shù)據(jù)的安全性是指保護數(shù)據(jù)以防止因不合法的使用而造成數(shù)據(jù)的泄密和破壞.這就要采取一定的安全保護措施.在數(shù)據(jù)庫中,系統(tǒng)用檢查口令等手段來檢查用戶身份,合法的用戶才能進入數(shù)據(jù)庫系統(tǒng).當(dāng)用戶對數(shù)據(jù)庫執(zhí)行操作時,系統(tǒng)自動檢查用戶是否有權(quán)限執(zhí)行這些操作.本章介紹了三方面的知識.首先介紹了SQL Server的安全性,并且闡述了2種安全模式:N T驗證模式和混合模式.接下來解釋SQL Server如何管理用戶帳號和用戶權(quán)限.在

2、管理用戶帳號中,你將會學(xué)到創(chuàng)建用戶帳號和管理角色( r o l e ),創(chuàng)建登錄名,用戶名和角色;在管理用戶權(quán)限中,你也會了解到如何授予用戶訪問數(shù)據(jù)庫中的不同對象的權(quán)限,及怎樣保護數(shù)據(jù)庫中的對象.7. 1 SQL Server 2005的驗證模式 7.1.1 NT 驗證模式7.1.2 混合安全模式7.1.3 設(shè)置驗證模式7.1.4 SQL Server 系統(tǒng)登錄驗證過程:P118本章首頁為了實現(xiàn)安全性, SQL Server對用戶的訪問進行兩個階段的檢驗:驗證階段(Authentication)許可確認階段(Permission Validation)SQL Server和Windows NT

3、/2000是結(jié)合在一起的,因此就產(chǎn)生了兩種驗證模式。SQL Server的驗證模式 驗證模式指的是安全方面的問題,每一個用戶要使用SQL Server,都必須經(jīng)過驗證。在安裝過程中,系統(tǒng)會提示選擇驗證模式。有兩種驗證模式:Windows身份驗證模式混合驗證模式(Windows身份驗證和SQL Server身份驗證)7.1.1 NT 驗證模式NT驗證模式是指要登錄到SQL Server系統(tǒng)的用戶身份由NT系統(tǒng)來進行驗證。在NT登錄驗證模式下,SQL Server回叫Windows NT以獲得相應(yīng)的登錄信息,并在sysxlogins表中查找該帳戶,以確定該帳戶是否有權(quán)登錄。在這種方式下,用戶不必提

4、供登錄名或密碼讓SQL server驗證。Windows身份驗證模式使用Windows操作系統(tǒng)本身提供的安全機制驗證用戶的身份。只要用戶能夠通過Windows NT或Windows 2000的用戶帳戶驗證,就可連接到SQL Server。本節(jié)首頁NT驗證模式對SQL Server的影響在 Windows NT/2000的注冊表內(nèi),保存了SQL Server驗證模式的相關(guān)信息及啟動SQL Server的必須信息. 在注冊表中,我的電腦KHEY_LOCAL_MACHINESoftwareMicrosoftMSSQLServerMSSQLServer中的LoginMode的值決定采用哪種驗證模式.每

5、次啟動SQL Server時,都將檢索該鍵的值,以決定使用哪種驗證模式.使用Windows NT驗證有如下特點:NT驗證模式下由Windows NT管理用戶帳戶,數(shù)據(jù)庫管理員的工作是管理數(shù)據(jù)庫;Windows NT有功能很強的工具去管理用戶帳戶,如安全驗證和密碼加密、審核、密碼過期、最短密碼長度以及在多次登錄請求失敗后鎖定帳戶;可以在SQL Server增加用戶組;7.1.2 混合模式混合驗證模式是指用戶登錄SQL Server系統(tǒng)時,其身份驗證由Windows NT和 SQL Server共同進行。使用哪個模式取決于在最初的通信時使用的網(wǎng)絡(luò)庫.但是對于Windows9x系列的操作系統(tǒng),只能使

6、用SQL Server驗證模式. SQL Server驗證模式處理登錄的過程為:用戶在輸入登錄名和密碼后, SQL Server在系統(tǒng)注冊表中檢測輸入的登錄名和密碼.如果輸入的登錄名存在,而且密碼也正確,就可以登錄到SQL Server上. 本節(jié)首頁混合驗證模式有如下特點:混合模式允許非Windows客戶、Internet客戶和混合的客戶組連接到SQL Server中增加了安全性方面的選擇 7.1.3 設(shè)置驗證模式設(shè)置驗證模式的工作只能由系統(tǒng)管理員來完成。使用SQL Server企業(yè)管理器時,設(shè)置或改變驗證模式的步驟如下: 運行SQL Server 企業(yè)管理器。 單擊“SQL Server 服

7、務(wù)器組”及要設(shè)置驗證模式服務(wù)器旁邊的+號,將服務(wù)器展開。 在服務(wù)器的名字上單擊右鍵,然后選擇“屬性”,系統(tǒng)將彈出 “SQL Server 屬性(配置)”窗口。 單擊“安全性”選項卡,可以看到“安全性”選項卡中包括3個部分: 選擇一種登錄模式,如:“僅 Windows NT”。 選擇一種“審核級別”,如選擇審核登錄失敗的事件,將有助于查登錄失敗的原因;選擇審核成功登錄的事件可以幫助你調(diào)試,但卻影響登錄的速度。 設(shè)置完成后,單擊“確認”,關(guān)閉對話窗口。 重新啟動SQL Server以使修改的值生效。本節(jié)首頁SQL Server的登錄訪問確認驗證SQL Server驗證信任連接SQL Server驗

8、證賬戶名和密碼或SQL ServerWindows 2000 組或用戶Windows 2000SQL Server登錄賬戶7.2 登錄管理7.2.1 系統(tǒng)管理員登錄賬戶7.2.2 用T-SQL語句創(chuàng)建、查看、刪除SQL Server 登錄賬戶7.2.3 用企業(yè)管理器創(chuàng)建、查看、刪除SQL Server 登錄賬戶本章首頁7.2.1 系統(tǒng)管理員登錄賬戶SQL Server有兩個默認的系統(tǒng)管理員登錄帳戶:sa 和 BUILTINAdministrators。這兩個登錄帳戶具有SQL Server系統(tǒng)和所有數(shù)據(jù)庫的全部權(quán)限。sa是一個特殊的登錄名,它代表混合驗證機制下SQL Server的系統(tǒng)管理員,

9、sa始終關(guān)聯(lián)dbo用戶。BUILTINAdministrators是NT系統(tǒng)的系統(tǒng)管理員組。具體地說,系統(tǒng)管理員負責(zé)下面的工作:創(chuàng)建登錄名配置服務(wù)器創(chuàng)建、刪除數(shù)據(jù)庫無須考慮所有權(quán)和權(quán)限,可以操作各種數(shù)據(jù)庫對象停止、啟動服務(wù)器停止在服務(wù)器上運行的無效過程某些權(quán)限只能被系統(tǒng)管理員擁有并且不能被授予其他用戶。這些功能是管理存儲空間,管理用戶進程及改變數(shù)據(jù)庫選項。 本節(jié)首頁7.2.2用T-SQL語句創(chuàng)建、查看、刪除SQL Server登錄帳戶1. 將已經(jīng)存在的NT登錄(NT組或用戶)增加到SQL Server系統(tǒng)登錄中使用系統(tǒng)存儲過程sp_grantlogin、sp_denylogin、sp_revo

10、kelogin可以分別允許、阻止、刪除Windows NT組或用戶到SQL Server的連接。sp_grantlogin的語法形式如下:sp_grantlogin login sp_denylogin的語法形式如下:sp_denylogin login sp_revokelogin的語法形式如下:sp_revokelogin login 注意:在要增加的帳戶login前面要加上域名及“”,而且這三個存儲過程不能放在同一個批中執(zhí)行。 將Window NT帳戶增加到SQL Server系統(tǒng)的時候,應(yīng)該考慮以下因素:如果Windows NT 用戶不是SQL Server組的成員,可以為其建立一個登

11、錄帳戶如果某個Windows NT組中的每個成員都要連接到SQL Server上,可以為該組建立一個登錄帳戶刪除Windows NT 組或用戶,不會刪除SQL Server中對應(yīng)的登錄帳戶補充:創(chuàng)建Windows用戶或組創(chuàng)建Windows用戶或組,就是將Windows中的用戶和組映射為SQL Server的登錄帳戶。(1) 使用T-SQL語句創(chuàng)建Windows用戶或組使用系統(tǒng)存儲過程sp_grantlogin將使Windows的用戶或組賬號映射成SQL Server的登錄帳戶。sp_grantlogin系統(tǒng)存儲過程的基本語法如下:sp_grantlogin loginame = login其中

12、login參數(shù)用于指定要添加的 Windows NT 用戶或組的名稱。Windows NT 組和用戶必須用 Windows NT 域名限定,格式為“域用戶”,例如 JinlqServerJinlq?!纠?將Windows Server 2000中本地組users映射成SQL Server的登錄帳戶。sp_grantlogin BUILTINusers(2) 使用企業(yè)管理器創(chuàng)建Windows用戶或組1)啟動企業(yè)管理器,展開相應(yīng)的服務(wù)器組和服務(wù)器節(jié)點。2)單擊并展開“安全性”節(jié)點,右擊“登錄”項,在彈出的快捷菜單中執(zhí)行“新建登錄”命令,出現(xiàn) “新建登錄”對話框。3)在“名稱”輸入框中輸入Wind

13、ows中已存在的用戶賬號或工作組名稱,這里輸入“users”工作組。4)在“身份驗證”單選按鈕組中選中“Windows身份驗證”單選項,表示該登錄使用Windows身份驗證。5)在“域”輸入框中輸入或選擇一個使用的域名。這里輸入“BUILTIN”,表示內(nèi)置本地組。6)在“默認設(shè)置”欄的“數(shù)據(jù)庫”列表框中選擇一個默認的數(shù)據(jù)庫。7)單擊“確定”按鈕,即可將Windows工作組users映射成SQL Server的登錄帳戶。第11章安全管理2. 使用T-SQL語言創(chuàng)建、查看、刪除SQL Server登錄帳戶 SQL Server登錄帳戶的創(chuàng)建使用系統(tǒng)存儲過程 sp_addlogin 可以創(chuàng)建一個登錄

14、帳戶。sp_addlogin存儲過程的語法形式如下:sp_addlogin login ,password ,default_databaselogin:要被創(chuàng)建的登錄帳戶。它是唯一必須給定值的參數(shù),而且必須是有效的SQL Server對象名。password:新登錄帳戶的密碼。default_database:新登錄帳戶訪問的默認數(shù)據(jù)庫。 SQL Server登錄帳戶的查看sp_helplogins【例7-1】創(chuàng)建一個登錄帳戶為ABC,密碼為123、使用的默認數(shù)據(jù)庫為JWGL。EXEC sp_addlogin ABC , 123 , jwgl EXEC sp_addlogin a1 , 11

15、1 , jwgl EXEC sp_addlogin a2 , 222 , master例:1.創(chuàng)建登錄名為”user01”,沒有密碼和默認數(shù)據(jù)庫的用戶EXEC sp_addlogin user01例: 2.創(chuàng)建用戶名為”user02”,密碼為”002”,默認數(shù)據(jù)庫為”XK”的用戶EXEC sp_addlogin user02,002,Xk 登錄帳戶的刪除刪除登錄帳戶和刪除用戶相似,但刪除登錄帳戶時需要在數(shù)據(jù)庫中做較為復(fù)雜的檢查,以確保不會在數(shù)據(jù)庫中留下孤兒型的用戶。一個孤兒型的用戶是指一個用戶沒有任何登錄名與其映射。刪除一個登錄帳戶時,SQL Server 必須確認這個登錄帳戶沒有關(guān)聯(lián)的用戶存

16、在于數(shù)據(jù)庫系統(tǒng)中。如果存在用戶和被刪除的登錄名關(guān)聯(lián),SQL Server將返回錯誤提示信息,指出數(shù)據(jù)庫中哪個用戶與被刪除的登錄帳戶相關(guān)聯(lián)。此時,必須先用sp_revokedbaccess存儲過程將每個數(shù)據(jù)庫中與該登錄帳戶關(guān)聯(lián)的用戶對象清除,然后才能刪除登錄帳戶。如果要刪除的登錄帳戶是數(shù)據(jù)庫所有者,則需要使用系統(tǒng)存儲過程sp _changedbowner將所有權(quán)轉(zhuǎn)授給其他的登錄帳戶。刪除一個登錄帳戶使用系統(tǒng)存儲過程 sp_droplogin。sp_droplogin存儲過程的語法形式如下: sp_droplogin login login:要被刪除的登錄帳戶。本節(jié)首頁【例7-2】從SQL Ser

17、ver中將登錄帳戶ABC刪除掉。 EXEC sp_droplogin ABC例:刪除前面建立的登錄用戶”user01”, ”user02”EXEC sp_droplogin user01EXEC sp_droplogin user027.2.3 用企業(yè)管理器創(chuàng)建、查看、刪除SQL Server登錄帳戶 1. 使用企業(yè)管理器將已經(jīng)存在的Windows NT組增加到SQL Server中使用企業(yè)管理器將已經(jīng)存在的NT組或用戶增加到SQL Server中的操作步驟如下: 啟動SQL Server企業(yè)管理器。展開服務(wù)器后,展開“安全性”文件夾。 點擊“登錄”圖標(biāo),右擊要右邊的窗格中授權(quán)的NT組或用戶,

18、在系統(tǒng)彈出的快捷菜單上點擊“屬性”。系統(tǒng)出現(xiàn)的“SQL Server 登錄屬性”窗口。 點擊“數(shù)據(jù)庫訪問”選項卡,選擇該NT用戶組或用戶可以訪問的數(shù)據(jù)庫,并可選擇其在該數(shù)據(jù)庫中允許擔(dān)任的數(shù)據(jù)庫角色。應(yīng)該注意的是,在選擇該登錄可以訪問的數(shù)據(jù)庫的同時,企業(yè)管理器將創(chuàng)建與登錄名完全相同的數(shù)據(jù)庫用戶。 點擊“確定”,一個NT組或用戶就增加到SQL Server中登錄帳戶中去了。2. 用企業(yè)管理器創(chuàng)建、刪除SQL服務(wù)器登錄帳戶 用企業(yè)管理器創(chuàng)建SQL服務(wù)器登錄帳戶其具體執(zhí)行步驟如下:()打開企業(yè)管理器,單擊需要登錄的服務(wù)器左邊的“+”號,然后展開安全性文件夾。 ()用右鍵單擊登錄(login)圖標(biāo),從快

19、捷菜單中選擇新建登錄(new login)選項,則出現(xiàn)SQL Server登錄屬性新建登錄對話框,如圖所示。(3)在名稱編輯框中輸入登錄名,在身份驗證選項欄中選擇新建的用戶帳號是Windows NT認證模式,還是SQL Server認證模式。 ()選擇服務(wù)器角色頁框,如圖所示。在服務(wù)器角色列表框中,列出了系統(tǒng)的固定服務(wù)器角色。 ()選擇數(shù)據(jù)庫訪問頁框,如圖所示。上面的列表框列出了該帳號可以訪問的數(shù)據(jù)庫,單擊數(shù)據(jù)庫左邊的復(fù)選框,表示該用戶可以訪問相應(yīng)的數(shù)據(jù)庫以及該帳號在數(shù)據(jù)庫中的用戶名。 ()設(shè)置完成后,單擊“確定”按鈕即可完成登錄帳號的創(chuàng)建。 圖6-2 新建登錄帳號對話框圖6-3 服務(wù)器角色對

20、話框 圖6-4 數(shù)據(jù)庫訪問對話框使用SQL Server的創(chuàng)建登錄向?qū)Чぞ邉?chuàng)建登錄帳號。其具體操作過程如下:圖6-5 歡迎使用創(chuàng)建登錄向?qū)υ捒驁D6-6 選擇身份驗證模式對話框圖6-7 選擇對用戶帳號的安全性設(shè)置對話框圖6-8 輸入登錄信息對話框 圖6-9 選擇安全性角色對話框圖6-10 選擇允許登錄帳號訪問的數(shù)據(jù)庫對話框 圖6-11 完成創(chuàng)建登錄向?qū)υ捒?. 用企業(yè)管理器創(chuàng)建、刪除SQL服務(wù)器登錄帳戶 用企業(yè)管理器創(chuàng)建SQL服務(wù)器登錄帳戶用企業(yè)管理器創(chuàng)建SQL服務(wù)器登錄帳戶的具體步驟如下: 啟動SQL服務(wù)器企業(yè)管理器。 單擊要連接的服務(wù)器左側(cè)的加號連接該服務(wù)器。 單擊“安全性”文件夾左側(cè)的

21、加號,將“安全性”文件夾展開。 右擊“登錄”,選擇“新建登錄”菜單項,進入如圖7-4“SQL服務(wù)器登錄屬性-新建登錄”窗口。 選擇一種身份驗證模式,如選擇窗口驗證模式,則需要選擇域名,再點擊名稱欄右邊“”按鈕,在你選擇的域中選擇一帳戶,然后指定該帳戶默認登錄的數(shù)據(jù)庫和默認語言;如選擇SQL服務(wù)器驗證模式,則需要輸入登錄帳戶名稱、密碼及確認密碼。點擊“服務(wù)器角色”選項卡可授與該登錄用戶服務(wù)器范圍內(nèi)的權(quán)限,點擊“數(shù)據(jù)庫訪問” 選項卡,可指定該登錄用戶可以訪問的數(shù)據(jù)庫。 單擊“確定”按鈕即可增加一個登錄帳戶。3. 查看及刪除登錄帳戶一個新的登錄帳戶增加后,可以在企業(yè)管理器中查看其詳細信息。查看一個帳

22、戶的步驟如下: 啟動SQL服務(wù)器企業(yè)管理器,并展開到“安全性”。 點擊“登錄”,右邊窗格顯示的是當(dāng)前以“域名登錄名”(領(lǐng)土login)格式顯示的登錄帳戶的列表。 右擊該窗口中的某一登錄帳戶,在系統(tǒng)彈出的菜單上點擊“屬性”可進入“SQL當(dāng)仆人登錄屬性”窗口查看該登錄帳戶的信息;點擊“刪除”可以刪除該登錄帳戶。本節(jié)首頁7.3 用戶管理7.3.1 數(shù)據(jù)庫用戶名和登錄名的關(guān)系7.3.2 用T-SQL語句創(chuàng)建、查看、刪除數(shù)據(jù)庫用戶7.3.3 使用企業(yè)管理器創(chuàng)建、查看、刪除數(shù)據(jù)庫用戶7.3.4 改變數(shù)據(jù)庫所有權(quán)本章首頁7.3.1 數(shù)據(jù)庫用戶名和登錄名的關(guān)系登錄名、數(shù)據(jù)庫用戶名是SQL服務(wù)器中兩個容易混淆的

23、概念。在數(shù)據(jù)庫中,一個用戶或工作組取得合法的登錄帳號,只表明該帳號通過了Windows NT認證或者SQL Server認證,但不能表明其可以對數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)庫對象進行某種或者某些操作,只有當(dāng)他同時擁有了用戶帳號后,才能夠訪問數(shù)據(jù)庫。 利用企業(yè)管理器可以授予SQL Server登錄訪問數(shù)據(jù)庫的許可權(quán)限。使用它可創(chuàng)建一個新數(shù)據(jù)庫用戶帳號 。登錄名是訪問SQL服務(wù)器的通行證。每個登錄名的定義存放在主人數(shù)據(jù)庫的表sysxlogins中。登錄名本身并不能讓用戶訪問服務(wù)器中的數(shù)據(jù)庫資源。要訪問特定的數(shù)據(jù)庫,還必須有數(shù)據(jù)庫用戶名。新的登錄創(chuàng)建以后,才能創(chuàng)建用戶,用戶在特定的數(shù)據(jù)庫內(nèi)創(chuàng)建,必須和一個登錄名

24、相關(guān)聯(lián)。用戶的定義信息存放在與其相關(guān)的數(shù)據(jù)庫的sysusers表中。這個表包含了該數(shù)據(jù)庫的所有用戶對象以及和它們相對應(yīng)的登錄名的標(biāo)識。用戶名沒有密碼和它相關(guān)聯(lián)。大多數(shù)情況下,登錄名和用戶名使用相同的名稱。在SQL服務(wù)器中,登錄帳戶和數(shù)據(jù)庫用戶是SQL服務(wù)器進行權(quán)限管理的兩種不同的對象。一個登錄帳戶可以與服務(wù)器上的所有數(shù)據(jù)庫進行關(guān)聯(lián),而數(shù)據(jù)庫用戶是一個登錄帳戶在某個數(shù)據(jù)庫中的映射,也就是說一個登錄帳戶可以映射到不同的數(shù)據(jù)庫,產(chǎn)生多個數(shù)據(jù)庫用戶,一個數(shù)據(jù)庫用戶只能映射到一個登錄帳戶。允許數(shù)據(jù)庫為每個用戶對象分配不同的權(quán)限,這一特點為在組內(nèi)分配權(quán)限提供了最大的自由度。 本節(jié)首頁7.3.2 用T-SQ

25、L語句創(chuàng)建、查看、刪除數(shù)據(jù)庫用戶登錄帳戶成功創(chuàng)建后,怎樣才能將登錄帳戶映射到數(shù)據(jù)庫中的用戶上呢?如果使用企業(yè)管理器創(chuàng)建登錄帳戶,可以省略這步操作。但要注意,實際上它完成了兩步不同的操作:第一步是創(chuàng)建登錄帳戶,第二步是將登錄帳戶映射為數(shù)據(jù)庫中同名的用戶。為一個登錄帳戶授權(quán),最常使用的方法是創(chuàng)建一個新的數(shù)據(jù)庫用戶,然后將其與一個登錄帳戶對應(yīng)起來。1. 用T-SQL語句創(chuàng)建數(shù)據(jù)庫用戶使用系統(tǒng)存儲過程sp_grantdbaccess可以在當(dāng)前數(shù)據(jù)庫中添加一個用戶安全帳戶,并使其能夠被授予在數(shù)據(jù)庫中執(zhí)行活動的權(quán)限。sp_grantdbaccess的語法格式如下:sp_grantdbaccess logi

26、n, name_in_db OUTPUT其中各參數(shù)的含義如下:l login:指定當(dāng)前數(shù)據(jù)庫中新安全帳戶的登錄名稱。Windows NT組和用戶必須用 Windows NT域名限定,格式為“域用戶”。l name_in_db:指定數(shù)據(jù)庫中用戶帳戶的名稱。【例7-3】在混合驗證模式下,為數(shù)據(jù)庫JWGL登錄帳戶”ABC”和“a1”和a2創(chuàng)建一個同名的數(shù)據(jù)庫用戶。use jwglgoexec sp_grantbaccess ABCexec sp_grantdbaccess a1exec sp_grantdbaccess a2【例】 在Educational數(shù)據(jù)庫中為Useredu登錄賬號創(chuàng)建一個名為

27、U_edu的用戶賬號。USE EducationalEXEC sp_grantdbaccess Useredu, U_edu2. 用T-SQL語句查看數(shù)據(jù)庫用戶使用系統(tǒng)存儲過程sp_helpuser可以查看數(shù)據(jù)庫中的有效帳戶信息。sp_helpuser的語法格式如下:sp_helpuser name_in_db = security_account 其中security_account參數(shù)指定當(dāng)前數(shù)據(jù)庫中SQL Server用戶、Windows NT 用戶或數(shù)據(jù)庫角色的名稱。security_account必須存在于當(dāng)前的數(shù)據(jù)庫中。3. 用T-SQL語句刪除數(shù)據(jù)庫用戶當(dāng)需要撤消某一登錄用戶對指

28、定數(shù)據(jù)庫的訪問權(quán)限時,最簡單的辦法就是在該數(shù)據(jù)庫中刪除該登錄用戶在指定數(shù)據(jù)庫中的用戶賬號。用辦理-SQL的sp_revokedbaccess存儲過程可以刪除數(shù)據(jù)庫用戶。這個存儲過程從數(shù)據(jù)庫中將用戶刪除,即從sysusers表中刪除用戶名。但在用戶定義事務(wù)內(nèi)部不能執(zhí)行存儲過程sp_revokedbaccess。sp_revokedbaccess存儲過程具體語法如下:sp_revokedbaccess name_in_db = 名字在以上語法形式中:? 名字:要刪除的用戶名。名字可以是SQL服務(wù)器的用戶名或存在于當(dāng)前數(shù)據(jù)庫中的窗口NT的用戶名或組名。注意,sp_revokedbaccess 存儲過

29、程不能刪除: 公眾角色、dbo、數(shù)據(jù)庫中的固定角色主人和 tempdb 數(shù)據(jù)庫中的 客人用戶帳戶窗口NT組中的 窗口NT用戶 本節(jié)首頁【例7-4】使用命令sp_revokedbaccess將數(shù)據(jù)庫中的“ABC”刪除掉。 sp_revokedbaccess ABC【例】 在Educational數(shù)據(jù)庫中刪除U_edu用戶賬號。USE EducationalEXEC sp_revokedbaccess U_edu7.3.3 使用企業(yè)管理器創(chuàng)建、查看、刪除數(shù)據(jù)庫用戶1. 使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫用戶與查看在SQL服務(wù)器的企業(yè)管理器中用以下步驟完成同樣的任務(wù): 啟動企業(yè)管理器。 展開要操作的服務(wù)器及要

30、創(chuàng)建用戶的數(shù)據(jù)庫。 點擊“用戶”,右邊窗格可以查看到該數(shù)據(jù)庫的用戶。 右擊“用戶”文件夾,選擇“新建數(shù)據(jù)庫用戶”,彈出“新建用戶”的窗口。 輸入要創(chuàng)建的數(shù)據(jù)庫用戶的名字,然后在下拉的列表中選擇對應(yīng)的登錄名。 單擊“確定”按鈕,將用戶添加到數(shù)據(jù)庫中。2. 使用企業(yè)管理器刪除數(shù)據(jù)庫用戶在企業(yè)管理器中用以下的步驟刪除用戶名: 啟動企業(yè)管理器。 展開要操作的服務(wù)器及要刪除用戶所在的數(shù)據(jù)庫。 單擊“用戶”,右邊顯示該數(shù)據(jù)庫所有的庫用戶。 右擊要刪除的用戶,在系統(tǒng)彈出的快捷菜單上選擇“刪除”來刪除這個用戶。 本節(jié)首頁7.3.4 改變數(shù)據(jù)庫所有權(quán)在數(shù)據(jù)庫中有一個用戶是數(shù)據(jù)庫所有者(database owne

31、r, dbo),擁有數(shù)據(jù)庫中所有的對象.只能有一個數(shù)據(jù)庫所有者.數(shù)據(jù)庫所有者不能被刪除. 通常,登錄名s a映射在庫中的用戶是d b o.必須使用s p _ c h a n g e d b o w n e r存儲過程來改變數(shù)據(jù)庫所有權(quán).這個存儲過程是唯一改變數(shù)據(jù)庫所有權(quán)的方法,在企業(yè)管理器中沒有類似功能. 這個存儲過程只有一個參數(shù),即新的所有者的登錄標(biāo)識.然后登錄標(biāo)識將映射到d b o用戶名上.本節(jié)首頁7.4 角色管理管理用戶是一件令人頭疼的事情.最大的麻煩在于要確保用戶能夠訪問到他們需要的數(shù)據(jù)但又不能獲得超出他們權(quán)限范圍的數(shù)據(jù).幸運的是,用戶一般在組中工作.也就是說可以將在相同數(shù)據(jù)上有相同權(quán)

32、限的用戶放入組中進理.SQLServer具有將用戶分配到組中的能力,分配給組的權(quán)限也適用于組中的每一個成員. 本章首頁角色是從SQL Server 7.0版本開始引進的新概念,它代替了以前版本中組的概念。利用角色,SQL Server管理者可以將某些用戶設(shè)置為某一角色,這樣只對角色進行權(quán)限設(shè)置便可以實現(xiàn)對所有用戶權(quán)限的設(shè)置,大大減少了管理員的工作量。SQL Server提供了用戶通常管理工作的預(yù)定義服務(wù)器角色和數(shù)據(jù)庫角色。 1、服務(wù)器角色 服務(wù)器角色是指根據(jù)SQL Server的管理任務(wù),以及這些任務(wù)相對的重要性等級來把具有SQL Server管理職能的用戶劃分為不同的用戶組,每一組所具有的管

33、理SQL Server的權(quán)限都是SQL Server內(nèi)置的,即不能對其進行添加、修改和刪除,只能向其中加入用戶或者其他角色。 七種常用的固定服務(wù)器角色 系統(tǒng)管理員:擁有SQL Server所有的權(quán)限許可。服務(wù)器管理員:管理SQL Server服務(wù)器端的設(shè)置。磁盤管理員:管理磁盤文件。進程管理員:管理SQL Server系統(tǒng)進程。安全管理員:管理和審核SQL Server系統(tǒng)登錄。安裝管理員:增加、刪除連接服務(wù)器,建立數(shù)據(jù)庫復(fù)制以及管理擴展存儲過程。數(shù)據(jù)庫創(chuàng)建者:創(chuàng)建數(shù)據(jù)庫,并對數(shù)據(jù)庫進行修改。固定服務(wù)器角色存放在主人數(shù)據(jù)庫的sysxlogins表中。執(zhí)行存儲過程sp_helpsrvrole,可

34、查看服務(wù)器上的固定服務(wù)器角色,要查看某個固定服務(wù)器角色的權(quán)限可執(zhí)行存儲過程sp_srvrolepermission。如在查詢分析器中執(zhí)行語句:實行sp_srvrolepermission sysadmin,可查看固定服務(wù)器角色sysadmin的權(quán)限。2. 為登錄帳戶指定及收回服務(wù)器角色使用sp_addsrvrolemember存儲過程或企業(yè)管理器可為一個登錄帳戶指定服務(wù)器角色。 使用系統(tǒng)存儲過程為登錄帳戶指定及收回服務(wù)器角色、指定服務(wù)器角色的系統(tǒng)存儲過程是sp_addsrvrolemember,具體語法如下: sp_addsrvrolemember 登錄,角色? 登錄:是指登錄名。? 角色:是

35、指服務(wù)器角色名。收回服務(wù)器角色的系統(tǒng)存儲過程sp_dropsrvrolemember,參數(shù)含義同上。具體語法如下:sp_dropsrvrolemember 登錄,角色【例】 將登錄用戶Useredu添加到sysadmin固定數(shù)據(jù)庫角色中。EXEC sp_addsrvrolemember Useredu, sysadmin【例7-5】 將登錄名ABC加到sysadmin角色中。sp_addsrvrolemember ABC ,sysadmin 使用企業(yè)管理器為登錄帳戶指定及收回服務(wù)器角色使用企業(yè)管理器為服務(wù)器角色增加成員的步驟如下: 啟動企業(yè)管理器。 展開要操作的服務(wù)器、展開“安全性”文件夾。

36、點擊“安全性”節(jié)點下的“服務(wù)器角色”,右邊窗格將顯示系統(tǒng)的8個服務(wù)器角色。 右擊要添加登錄到的服務(wù)器角色(如sysadmin),選擇“屬性”,系統(tǒng)將彈出如圖7-5的 如要收回某登錄帳戶的服務(wù)器角色,只需從圖7-5中選擇該登錄帳戶,然后點擊“刪除”即可。 如要為登錄帳戶指定服務(wù)器角色,單擊“添加”按鈕,出現(xiàn)“添加成員”窗口。 在“添加成員”窗口中選擇相應(yīng)的用戶并單擊“確定”按鈕將它們加入到組中。 再次單擊“確定”按鈕,退出“服務(wù)器角色屬性”窗口。本節(jié)首頁7.4.2 數(shù)據(jù)庫角色數(shù)據(jù)庫角色分為固定數(shù)據(jù)庫角色和自定義數(shù)據(jù)庫角色。1. 固定數(shù)據(jù)庫角色及功能在安裝完SQL服務(wù)器后,系統(tǒng)將自動創(chuàng)建如表7-2

37、所示的10個固定的數(shù)據(jù)庫角色。表7-2 固定數(shù)據(jù)庫角色及功能 角色 功能公眾維護默認的許可db_owner 數(shù)據(jù)庫屬主,在特定數(shù)據(jù)庫內(nèi)具有全部權(quán)限db_accessadmin 能夠添加、刪除數(shù)據(jù)庫用戶和角色db_securityadmin 可以管理全部權(quán)限、對象所有權(quán)、角色和角色成員資格db_ddladmin 能夠添加、刪除和修改數(shù)據(jù)庫對象。db_backupoperator能夠備份和恢復(fù)數(shù)據(jù)庫。db_datareader 能夠從任意表中讀出數(shù)據(jù)。db_datawriter 能夠?qū)θ我獗聿迦?、修改和刪除數(shù)據(jù)。db_denydatareader 不允許從表中讀數(shù)據(jù)。db_denydatawrit

38、er 不允許改變表中的數(shù)據(jù)。公眾角色是一個特殊的數(shù)據(jù)庫角色,數(shù)據(jù)庫中的每位用戶都是公眾角色的成員,它負責(zé)維護數(shù)據(jù)庫中用戶的全部默認許可,不能將用戶和組或角色指定公眾角色。在使用NT驗證模式時,推薦使用企業(yè)管理器將窗口NT的組加入到指定的數(shù)據(jù)庫中并為NT組成員提供登錄名和數(shù)據(jù)庫用戶名,在這里,用戶被定義成某種數(shù)據(jù)庫角色。利用這種方法,數(shù)據(jù)庫管理員可以減輕創(chuàng)建組時的工作量。要瀏覽數(shù)據(jù)庫固定數(shù)據(jù)庫角色,可執(zhí)行系統(tǒng)存儲過程:實行sp_helpfixesrole有如下幾點需要注意:數(shù)據(jù)庫角色在數(shù)據(jù)庫級別上被定義,存在于數(shù)據(jù)庫之內(nèi)。數(shù)據(jù)庫角色存放在每個數(shù)據(jù)庫sysusers表中固定數(shù)據(jù)庫角色不能被刪除、修

39、改、創(chuàng)建固定數(shù)據(jù)庫角色可以指定給其它登錄帳戶()用戶自定義角色 創(chuàng)建用戶定義的數(shù)據(jù)庫角色就是創(chuàng)建一組用戶,這些用戶具有相同的一組許可。如果一組用戶需要執(zhí)行在SQL Server中指定的一組操作并且不存在對應(yīng)的Windows NT組,或者沒有管理Windows NT用戶帳號的許可,就可以在數(shù)據(jù)庫中建立一個用戶自定義的數(shù)據(jù)庫角色。用戶自定義的數(shù)據(jù)庫角色有兩種類型:即標(biāo)準(zhǔn)角色和應(yīng)用程序角色。標(biāo)準(zhǔn)角色和應(yīng)用程序角色 標(biāo)準(zhǔn)角色通過對用戶權(quán)限等級的認定而將用戶劃分為不用的用戶組,使用戶總是相對于一個或多個角色,從而實現(xiàn)管理的安全性。 應(yīng)用程序角色是一種比較特殊的角色。當(dāng)我們打算讓某些用戶只能通過特定的應(yīng)用

40、程序間接地存取數(shù)據(jù)庫中的數(shù)據(jù)而不是直接地存取數(shù)據(jù)庫數(shù)據(jù)時,就應(yīng)該考慮使用應(yīng)用程序角色。當(dāng)某一用戶使用了應(yīng)用程序角色時,他便放棄了已被賦予的所有數(shù)據(jù)庫專有權(quán)限,他所擁有的只是應(yīng)用程序角色被設(shè)置的角色。sp_addrole:用來創(chuàng)建一個新的數(shù)據(jù)庫角色sp_addrole role,ownersp_droprole:用于刪除一個數(shù)據(jù)庫角色sp_droprole rolesp_helprole:顯示當(dāng)前數(shù)據(jù)庫所有的數(shù)據(jù)庫角色的所有信息sp_helprole rolesp_addrolemember:向數(shù)據(jù)庫某一角色中添加數(shù)據(jù)庫用戶sp_addrolemember role,security_accou

41、ntsp_droprolemember:用來刪除某一角色的用戶sp_droprolemember role,security_accountsp_helprolemember:用于顯示某一數(shù)據(jù)庫角色的所有成員sp_helprolemember role管理數(shù)據(jù)庫角色【例】 在Educational數(shù)據(jù)庫中創(chuàng)建一個名為eduManagers的數(shù)據(jù)庫角色。USE EducationalEXEC sp_addrole eduManagers, U_edu【例7-6】增加一個叫AAA的自定義數(shù)據(jù)庫角色。 sp_addrole AAA ,dbo例 1.使用系統(tǒng)存儲過程添加名為”role01”的標(biāo)準(zhǔn)角色到

42、XK數(shù)據(jù)庫中.USE XkGOEXEC sp_addrole role01 2.刪除此角色USE XkGOEXEC sp_droprole role01注:以上皆為標(biāo)準(zhǔn)角色應(yīng)用程序角色例 使用存儲過程,在XK數(shù)據(jù)庫中添加一個名為”AppRolr02”,密碼為”002”的應(yīng)用角色USE XkGOEXEC sp_addapprole AppRole02,002例 生成應(yīng)用程序角色并指定權(quán)限,演示應(yīng)用程序角色如何被激活.1.增加應(yīng)用程序角色USE XkEXEC sp_addapprole AppRole03,0032.授權(quán)AppRole03具有Course表的SELECT權(quán)限GRANT SELECT

43、 ON Course TO AppRole033.創(chuàng)建登錄名為user01,密碼為001,默認數(shù)據(jù)庫為XK,并能連接到XK數(shù)據(jù)庫的用戶.EXEC sp_addlogin user01,001,XkUSE XkEXEC sp_grantdbaccess user01, user014.以user01身份連接另一查詢分析器窗口5.在新的查詢分析器窗口中運行SELECT * FROM Course6.激活應(yīng)用程序角色AppRole03.EXEC SP_SETAPPROLE AppRole03,0037.重新執(zhí)行SELECT * FROM Course使用企業(yè)管理器創(chuàng)建自定義數(shù)據(jù)庫角色使用企業(yè)管理器可

44、以創(chuàng)建自定義數(shù)據(jù)庫角色,具體創(chuàng)建的步驟如下: 啟動企業(yè)管理器。 展開要操作的服務(wù)器、展開想添加角色的數(shù)據(jù)庫。 右擊“角色”文件夾并選擇“新建數(shù)據(jù)庫角色”,系統(tǒng)將彈出如圖7-6(P128)的“數(shù)據(jù)庫角色-新建角色”的對話窗口。 輸入角色名。 選擇作為角色成員的用戶。單擊“添加”按鈕。用戶被顯示在“用戶”列表框內(nèi)。選中相應(yīng)的用戶并單擊“確定”按鈕將它們加入到角色中。 再次單擊“確定”按鈕,退出“數(shù)據(jù)庫角色-新建角色”窗口。 刪除自定義數(shù)據(jù)庫角色用戶自定義數(shù)據(jù)庫角色可以刪除,從數(shù)據(jù)庫中刪除“角色”和從數(shù)據(jù)庫中刪除用戶非常相似。但是,和固定服務(wù)器角色一樣,固定數(shù)據(jù)庫角色不能被刪除。使用系統(tǒng)存儲過程刪除

45、自定義數(shù)據(jù)庫角色刪除自定義數(shù)據(jù)庫角色的系統(tǒng)存儲過程是sp_droprole,其語法形式如下: sp_droprole 角色? 角色:要刪除的自定義數(shù)據(jù)庫角色。在執(zhí)行sp_droprole時要注意的一點是:要刪除的角色必須沒有成員。被刪除角色中的所有成員必須刪除或被事先改變到其他的角色中。如果使用sp_droprole去刪除一個非空的角色時,系統(tǒng)將會給出如下的錯誤信息:服務(wù)器: 消息 15144,級別 16,狀態(tài) 1,過程 sp_droprole,行 53該角色有成員。角色必須為空白后才能除去。使用企業(yè)管理器刪除自定義數(shù)據(jù)庫角色 啟動企業(yè)管理器。 展開需要操作的服務(wù)器并展開要操作的數(shù)據(jù)庫。 展開

46、“角色”,右擊要刪除的自定義數(shù)據(jù)庫角色,在系統(tǒng)彈出的快捷菜單中選擇“刪除”。確認“刪除”操作,如該角色無成員,該角色將被刪除,如該角色有成員,系統(tǒng)將給出提示。3. 為數(shù)據(jù)庫角色添加及刪除成員使用系統(tǒng)存儲過程或企業(yè)管理器為一個數(shù)據(jù)庫角色添加及刪除成員。 使用系統(tǒng)存儲過程為數(shù)據(jù)庫角色增加及刪除成員系統(tǒng)存儲過程sp_addrolemembe可為數(shù)據(jù)庫角色增加成員,sp_addrolemember存儲過程的具體語法如下:sp_addrolemember 角色,security_account ? 角色:數(shù)據(jù)庫角色名。? security_account:數(shù)據(jù)庫用戶名。系統(tǒng)存儲過程sp_droprole

47、membe可為數(shù)據(jù)庫角色刪除成員,sp_droprolemember存儲過程的具體語法如下:sp_addrolemember 角色,security_account 角色及security_account參數(shù)的含義同上。【例7-7】使用系統(tǒng)存儲過程sp_addrolemember將數(shù)據(jù)庫用戶ABC,a1,a2作為成員添加到數(shù)據(jù)庫角色AAA中,再將ABC從數(shù)據(jù)庫角色AAA中刪除。 use jwglexec sp_addrolemember AAA,a1exec sp_addrolemember AAA,a2exec sp_addrolemember AAA,ABCgosp_droprolemem

48、ber AAA,ABC【例】使用系統(tǒng)存儲過程sp_addrolemember將SQL Server用戶 user01添加到Xk數(shù)據(jù)庫中的Role01角色。USE XkGOEXEC sp_addrolemember Role01, user01【例】使用系統(tǒng)存儲過程sp_addrolemember將windows2000用戶LC01Win2000_User01添加到XK數(shù)據(jù)庫,使其成為用戶User01_2000.然后再將User01_2000添加到XK數(shù)據(jù)庫的Role01角色中(注意:要保證在windows2000下已創(chuàng)建該用戶)USE XkGOEXEC sp_grantdbaccess LC0

49、1Win2000_User01, User01_2000GOEXEC sp_addrolemember Role01, User01_2000 使用企業(yè)管理器為數(shù)據(jù)庫角色增加及刪除成員使用企業(yè)管理器為數(shù)據(jù)庫角色增加及刪除成員的具體步驟如下: 啟動企業(yè)管理器。 展開要操作的服務(wù)器并展開要添加用戶的數(shù)據(jù)庫。 單擊“角色”文件夾,右邊窗格出現(xiàn)該數(shù)據(jù)庫的所有角色列表,右擊某個角色并選擇“屬性”。系統(tǒng)將彈出類似圖7-6(P128)那樣的“數(shù)據(jù)庫角色屬性”對話窗口。 如要刪除該數(shù)據(jù)庫角色的某個成員,可點擊該成員,再點擊“刪除”即可。 如要為該數(shù)據(jù)庫角色添加成員,單擊“添加”按鈕,出現(xiàn)“添加角色成員”窗口。

50、 在“添加角色成員”窗口中,選擇某一用戶并單擊“確定”按鈕將它們加入到組中。 在用戶增加完后,單擊“確定”按鈕,一個數(shù)據(jù)庫角色的成員就添加進去了。 本節(jié)首頁7. 5 權(quán)限(許可)管理7.5.1 許可類型7.5.2 許可的驗證7.5.3 管理許可 本章首頁許可用來指定授權(quán)用戶可以使用的數(shù)據(jù)庫對象和這些授權(quán)用戶可以對這些數(shù)據(jù)庫對象執(zhí)行的操作。用戶在登錄到SQL Server之后,其用戶帳號所歸屬的NT組或角色所被賦予的許可(權(quán)限)決定了該用戶能夠?qū)δ男?shù)據(jù)庫對象執(zhí)行哪種操作以及能夠訪問、修改哪些數(shù)據(jù)。在每個數(shù)據(jù)庫中用戶的許可獨立于用戶帳號和用戶在數(shù)據(jù)庫中的角色,每個數(shù)據(jù)庫都有自己獨立的許可系統(tǒng),在

51、SQL Server中包括三種類型的許可:即對象許可、語句許可和預(yù)定義許可。 7.5.1三種許可類型1、對象許可表示對特定的數(shù)據(jù)庫對象,即表、視圖、字段和存儲過程的操作許可,它決定了能對表、視圖等數(shù)據(jù)庫對象執(zhí)行哪些操作。 2、語句許可表示對數(shù)據(jù)庫的操作許可,也就是說,創(chuàng)建數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫中的其它內(nèi)容所需要的許可類型稱為語句許可。3、默認(預(yù)定義)許可是指系統(tǒng)安裝以后有些用戶和角色不必授權(quán)就有的許可。 1. 默認許可SQL服務(wù)器中包含很多對象,每個對象都有一個屬主。一般來說,對象的屬主是創(chuàng)建該對象的用戶。如果系統(tǒng)管理員創(chuàng)建了一個數(shù)據(jù)庫,系統(tǒng)管理員就是這個數(shù)據(jù)庫的屬主。如果一個用戶創(chuàng)建了一個表

52、,這個用戶就是這個表的屬主。很顯然,系統(tǒng)管理員具有這個數(shù)據(jù)庫的全部操作權(quán)限,創(chuàng)建表的用戶具有這個表全部操作權(quán)限。這就是數(shù)據(jù)庫對象的默認許可。默認許可也稱為暗指許可。數(shù)據(jù)庫中的用戶根據(jù)它們在數(shù)據(jù)庫中的角色被設(shè)定了某些缺省權(quán)限,也就意味著這些用戶獲得某些默認許可。這樣的用戶有四類:第一類,系統(tǒng)管理員,可以創(chuàng)建和刪除數(shù)據(jù)庫,配置服務(wù)器。系統(tǒng)管理員永遠擁有主人數(shù)據(jù)庫;第二類,數(shù)據(jù)庫屬主,可以創(chuàng)建和管理數(shù)據(jù)庫中的對象以及管理整個數(shù)據(jù)庫;第三類,對象屬主,是特定對象的屬主。對數(shù)據(jù)庫來說,dbo就是對象屬主。一個對象屬主可以在對象上進行授予或回收權(quán)限的操作而且可以刪除對象;第四類,數(shù)據(jù)庫用戶,其默認許可取決

53、于創(chuàng)建數(shù)據(jù)庫用戶時的設(shè)置。2. 對象許可對象許可是指用戶基于數(shù)據(jù)庫層次上的訪問和操作權(quán)限,如果沒有對象的許可,用戶將不能訪問該對象。對象許可有五種:查詢、插入、修改、刪除和執(zhí)行。前四個許可是用于表和視圖的,執(zhí)行許可只用于存儲過程。選擇:該許可授予數(shù)據(jù)庫中某個特定表的用戶,具備這種許可的用戶才能訪問、操作該表的數(shù)據(jù)。插入:該許可授予數(shù)據(jù)庫中某個特定表的用戶可以向表中插入數(shù)據(jù)。更新:該許可授予數(shù)據(jù)庫中某個特定表的用戶可以對表中的數(shù)據(jù)進行更新。刪除:該許可授予數(shù)據(jù)庫中某個特定表的用戶可以刪除表中的數(shù)據(jù)。執(zhí)行:該許可授予數(shù)據(jù)庫中某個特定的用戶,具有這種許可的用戶可以執(zhí)行存儲過程。3.語句許可語句許可通

54、常授予需要在數(shù)據(jù)庫中創(chuàng)建對象或修改對象、執(zhí)行數(shù)據(jù)庫和事務(wù)日志備份的用戶。如果一個用戶獲得某個語句的許可,該用戶就具有了執(zhí)行該語句的權(quán)力。以下是需要進行許可設(shè)置的語句:BACKUP DTADBASE:允許用戶執(zhí)行備份數(shù)據(jù)庫的操作。BACK LOG:允許用戶執(zhí)行備份事務(wù)日志庫的操作。CREATE DATABASE:允許用戶創(chuàng)建新的數(shù)據(jù)庫。CREATE DEFAULT:允許用戶創(chuàng)建缺省。CREATE PROCEDURE:允許用戶執(zhí)行創(chuàng)建存儲過程的操作。CTEATE FUNCTION:允許用戶創(chuàng)建用戶定義函數(shù)。CREATE RULE:允許用戶創(chuàng)建規(guī)則。CREATE TABLE:允許用戶創(chuàng)建表。CREA

55、TE VIEW:允許用戶創(chuàng)建視圖。語句許可授予用戶執(zhí)行相應(yīng)命令的能力,語句許可適用于創(chuàng)建和刪除對象、備份和恢復(fù)數(shù)據(jù)庫。本節(jié)首頁7.5.2 許可的驗證針對每一個數(shù)據(jù)庫及數(shù)據(jù)庫對象,管理員為用戶指定了執(zhí)行某些操作的許可。當(dāng)用戶執(zhí)行某個操作時,系統(tǒng)首先進行許可檢查,用戶獲得許可,可以執(zhí)行該操作,否則,不允許執(zhí)行該操作,系統(tǒng)返回錯誤信息。SQL服務(wù)器2000進行許可驗證的步驟如下: 用戶執(zhí)行某項操作,相應(yīng)的SQL語句通過網(wǎng)絡(luò)發(fā)送到SQL服務(wù)器服務(wù)器。 SQL服務(wù)器服務(wù)器收到SQL語句后,檢查該用戶是否具有對操作對象的許可權(quán)限及執(zhí)行這些語句的權(quán)限。 如果SQL服務(wù)器服務(wù)器許可驗證通過,SQL服務(wù)器系統(tǒng)執(zhí)

56、行相應(yīng)的操作,否則,系統(tǒng)給出錯誤信息。本節(jié)首頁7.5.3 管理許可1. 管理許可的用戶以下的四種用戶可以對部分或全部語句授權(quán):系統(tǒng)管理員(系統(tǒng)管理員):有sa帳戶或具有相同權(quán)限的用戶數(shù)據(jù)庫的屬主(數(shù)據(jù)庫所有者):當(dāng)前數(shù)據(jù)庫的擁有者對象的屬主(物體所有者):當(dāng)前對象的擁有者數(shù)據(jù)庫用戶(使用者):不屬于以上用戶的其他用戶2. 許可的狀態(tài)授予許可:授予允許用戶帳戶執(zhí)行某些操作的語句權(quán)限和對象權(quán)限禁止許可:禁止某些用戶或角色的權(quán)限,刪除以前授予用戶、組或角色的權(quán)限,停用從其它角色繼承的權(quán)限并確保用戶、組或角色不繼承更高級別的組或角色的權(quán)限。 撤消許可:可以廢除以前授予或禁止的權(quán)限。撤消許可類似于禁止許

57、可,二者都是在同一級別上刪除已授予的權(quán)限。但是,撤消許可是刪除已授予的許可,并不妨礙用戶、組或角色從更高級別繼承已授予的許可。許可的授予、撤消及禁止只能在當(dāng)前數(shù)據(jù)庫中進行。許可的管理 1. 使用SQL Server 企業(yè)管理器管理許可 SQL Server 可通過兩種途徑:即面向單一用戶和面向數(shù)據(jù)庫對象的許可設(shè)置,來實現(xiàn)對語句許可和對象許可的管理,從而實現(xiàn)對用戶許可的設(shè)定。Transaction_SQL 語句使用grant、revoke和deny三種命令來實現(xiàn)管理權(quán)限。2. 用T-SQL語言設(shè)置許可的授予、撤消和禁止可用于語句許可的Transaction_SQL 語句及其含義如下:Create

58、 database:創(chuàng)建數(shù)據(jù)庫Create table:創(chuàng)建表Create view:創(chuàng)建視圖Create rule:創(chuàng)建規(guī)則Create default:創(chuàng)建缺省Create procedure:創(chuàng)建存儲過程Create index:創(chuàng)建索引Backup database:備份數(shù)據(jù)庫Backup log:備份事務(wù)日志 授予許可授予許可使用的是授予語句,其語法形式如下: 授予 在 到 grant on to 上面語法中:? permission:可以是相應(yīng)對象的任何有效權(quán)限的組合。可以使用關(guān)鍵字全部的來替代權(quán)限組合表示所有權(quán)限。? object:被授權(quán)的對象。這個對象可以是一個表,視圖,表或視

59、圖中的一組列,或一個存儲過程。? user:被授權(quán)的一個或多個用戶,或組?!纠?-8】授予用戶a1,a2在數(shù)據(jù)庫JWGL中創(chuàng)建表及對表學(xué)生具有查詢、刪除權(quán)的許可。grant create table to a1grant select , delete on student to a2【例】授予U_edu用戶對表Course執(zhí)行SELECT、INSERT和UPDATE語句的權(quán)限,并允許該用戶將其權(quán)限授予其他用戶。USE EducationalGRANT SELECT, INSERT, UPDATE ON Course TO U_edu WITH GRANT OPTION/* 將其擁有的權(quán)限可以

60、再授予其他用戶 */【例】 授予U_edu用戶具有執(zhí)行CREATE TABLE和CREATE PROCEDURE語句的權(quán)限。USE EducationalGRANT CREATE TABLE, CREATE PROCEDURE TO U_edu【例】給用戶user01授予CREATE TABLE的權(quán)限USE XkGOGRANT CREATE TABLE TO user01【例】給用戶Role01角色授予SELECT的權(quán)限.然后將特定的權(quán)限授予用戶user01USE XkGOGRANT SELECT ON Student TO Role01GO GRANT INSERT, UPDATE, DEL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論