




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第7章 SQL Server的安全性管理 7. 1 SQL Server 2005的驗(yàn)證模式7. 2 登錄管理7. 3 用戶管理7. 4 角色管理7. 5 許可管理 綜合練習(xí) 返回目錄數(shù)據(jù)的安全性是指保護(hù)數(shù)據(jù)以防止因不合法的使用而造成數(shù)據(jù)的泄密和破壞.這就要采取一定的安全保護(hù)措施.在數(shù)據(jù)庫中,系統(tǒng)用檢查口令等手段來檢查用戶身份,合法的用戶才能進(jìn)入數(shù)據(jù)庫系統(tǒng).當(dāng)用戶對(duì)數(shù)據(jù)庫執(zhí)行操作時(shí),系統(tǒng)自動(dòng)檢查用戶是否有權(quán)限執(zhí)行這些操作.本章介紹了三方面的知識(shí).首先介紹了SQL Server的安全性,并且闡述了2種安全模式:N T驗(yàn)證模式和混合模式.接下來解釋SQL Server如何管理用戶帳號(hào)和用戶權(quán)限.在
2、管理用戶帳號(hào)中,你將會(huì)學(xué)到創(chuàng)建用戶帳號(hào)和管理角色( r o l e ),創(chuàng)建登錄名,用戶名和角色;在管理用戶權(quán)限中,你也會(huì)了解到如何授予用戶訪問數(shù)據(jù)庫中的不同對(duì)象的權(quán)限,及怎樣保護(hù)數(shù)據(jù)庫中的對(duì)象.7. 1 SQL Server 2005的驗(yàn)證模式 7.1.1 NT 驗(yàn)證模式7.1.2 混合安全模式7.1.3 設(shè)置驗(yàn)證模式7.1.4 SQL Server 系統(tǒng)登錄驗(yàn)證過程:P118本章首頁為了實(shí)現(xiàn)安全性, SQL Server對(duì)用戶的訪問進(jìn)行兩個(gè)階段的檢驗(yàn):驗(yàn)證階段(Authentication)許可確認(rèn)階段(Permission Validation)SQL Server和Windows NT
3、/2000是結(jié)合在一起的,因此就產(chǎn)生了兩種驗(yàn)證模式。SQL Server的驗(yàn)證模式 驗(yàn)證模式指的是安全方面的問題,每一個(gè)用戶要使用SQL Server,都必須經(jīng)過驗(yàn)證。在安裝過程中,系統(tǒng)會(huì)提示選擇驗(yàn)證模式。有兩種驗(yàn)證模式:Windows身份驗(yàn)證模式混合驗(yàn)證模式(Windows身份驗(yàn)證和SQL Server身份驗(yàn)證)7.1.1 NT 驗(yàn)證模式NT驗(yàn)證模式是指要登錄到SQL Server系統(tǒng)的用戶身份由NT系統(tǒng)來進(jìn)行驗(yàn)證。在NT登錄驗(yàn)證模式下,SQL Server回叫Windows NT以獲得相應(yīng)的登錄信息,并在sysxlogins表中查找該帳戶,以確定該帳戶是否有權(quán)登錄。在這種方式下,用戶不必提
4、供登錄名或密碼讓SQL server驗(yàn)證。Windows身份驗(yàn)證模式使用Windows操作系統(tǒng)本身提供的安全機(jī)制驗(yàn)證用戶的身份。只要用戶能夠通過Windows NT或Windows 2000的用戶帳戶驗(yàn)證,就可連接到SQL Server。本節(jié)首頁NT驗(yàn)證模式對(duì)SQL Server的影響在 Windows NT/2000的注冊(cè)表內(nèi),保存了SQL Server驗(yàn)證模式的相關(guān)信息及啟動(dòng)SQL Server的必須信息. 在注冊(cè)表中,我的電腦KHEY_LOCAL_MACHINESoftwareMicrosoftMSSQLServerMSSQLServer中的LoginMode的值決定采用哪種驗(yàn)證模式.每
5、次啟動(dòng)SQL Server時(shí),都將檢索該鍵的值,以決定使用哪種驗(yàn)證模式.使用Windows NT驗(yàn)證有如下特點(diǎn):NT驗(yàn)證模式下由Windows NT管理用戶帳戶,數(shù)據(jù)庫管理員的工作是管理數(shù)據(jù)庫;Windows NT有功能很強(qiáng)的工具去管理用戶帳戶,如安全驗(yàn)證和密碼加密、審核、密碼過期、最短密碼長(zhǎng)度以及在多次登錄請(qǐng)求失敗后鎖定帳戶;可以在SQL Server增加用戶組;7.1.2 混合模式混合驗(yàn)證模式是指用戶登錄SQL Server系統(tǒng)時(shí),其身份驗(yàn)證由Windows NT和 SQL Server共同進(jìn)行。使用哪個(gè)模式取決于在最初的通信時(shí)使用的網(wǎng)絡(luò)庫.但是對(duì)于Windows9x系列的操作系統(tǒng),只能使
6、用SQL Server驗(yàn)證模式. SQL Server驗(yàn)證模式處理登錄的過程為:用戶在輸入登錄名和密碼后, SQL Server在系統(tǒng)注冊(cè)表中檢測(cè)輸入的登錄名和密碼.如果輸入的登錄名存在,而且密碼也正確,就可以登錄到SQL Server上. 本節(jié)首頁混合驗(yàn)證模式有如下特點(diǎn):混合模式允許非Windows客戶、Internet客戶和混合的客戶組連接到SQL Server中增加了安全性方面的選擇 7.1.3 設(shè)置驗(yàn)證模式設(shè)置驗(yàn)證模式的工作只能由系統(tǒng)管理員來完成。使用SQL Server企業(yè)管理器時(shí),設(shè)置或改變驗(yàn)證模式的步驟如下: 運(yùn)行SQL Server 企業(yè)管理器。 單擊“SQL Server 服
7、務(wù)器組”及要設(shè)置驗(yàn)證模式服務(wù)器旁邊的+號(hào),將服務(wù)器展開。 在服務(wù)器的名字上單擊右鍵,然后選擇“屬性”,系統(tǒng)將彈出 “SQL Server 屬性(配置)”窗口。 單擊“安全性”選項(xiàng)卡,可以看到“安全性”選項(xiàng)卡中包括3個(gè)部分: 選擇一種登錄模式,如:“僅 Windows NT”。 選擇一種“審核級(jí)別”,如選擇審核登錄失敗的事件,將有助于查登錄失敗的原因;選擇審核成功登錄的事件可以幫助你調(diào)試,但卻影響登錄的速度。 設(shè)置完成后,單擊“確認(rèn)”,關(guān)閉對(duì)話窗口。 重新啟動(dòng)SQL Server以使修改的值生效。本節(jié)首頁SQL Server的登錄訪問確認(rèn)驗(yàn)證SQL Server驗(yàn)證信任連接SQL Server驗(yàn)
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有兩個(gè)默認(rèn)的系統(tǒng)管理員登錄帳戶:sa 和 BUILTINAdministrators。這兩個(gè)登錄帳戶具有SQL Server系統(tǒng)和所有數(shù)據(jù)庫的全部權(quán)限。sa是一個(gè)特殊的登錄名,它代表混合驗(yàn)證機(jī)制下SQL Server的系統(tǒng)管理員,
9、sa始終關(guān)聯(lián)dbo用戶。BUILTINAdministrators是NT系統(tǒng)的系統(tǒng)管理員組。具體地說,系統(tǒng)管理員負(fù)責(zé)下面的工作:創(chuàng)建登錄名配置服務(wù)器創(chuàng)建、刪除數(shù)據(jù)庫無須考慮所有權(quán)和權(quán)限,可以操作各種數(shù)據(jù)庫對(duì)象停止、啟動(dòng)服務(wù)器停止在服務(wù)器上運(yùn)行的無效過程某些權(quán)限只能被系統(tǒng)管理員擁有并且不能被授予其他用戶。這些功能是管理存儲(chǔ)空間,管理用戶進(jìn)程及改變數(shù)據(jù)庫選項(xiàng)。 本節(jié)首頁7.2.2用T-SQL語句創(chuàng)建、查看、刪除SQL Server登錄帳戶1. 將已經(jīng)存在的NT登錄(NT組或用戶)增加到SQL Server系統(tǒng)登錄中使用系統(tǒng)存儲(chǔ)過程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前面要加上域名及“”,而且這三個(gè)存儲(chǔ)過程不能放在同一個(gè)批中執(zhí)行。 將Window NT帳戶增加到SQL Server系統(tǒng)的時(shí)候,應(yīng)該考慮以下因素:如果Windows NT 用戶不是SQL Server組的成員,可以為其建立一個(gè)登
11、錄帳戶如果某個(gè)Windows NT組中的每個(gè)成員都要連接到SQL Server上,可以為該組建立一個(gè)登錄帳戶刪除Windows NT 組或用戶,不會(huì)刪除SQL Server中對(duì)應(yīng)的登錄帳戶補(bǔ)充:創(chuàng)建Windows用戶或組創(chuàng)建Windows用戶或組,就是將Windows中的用戶和組映射為SQL Server的登錄帳戶。(1) 使用T-SQL語句創(chuàng)建Windows用戶或組使用系統(tǒng)存儲(chǔ)過程sp_grantlogin將使Windows的用戶或組賬號(hào)映射成SQL Server的登錄帳戶。sp_grantlogin系統(tǒng)存儲(chǔ)過程的基本語法如下: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)啟動(dòng)企業(yè)管理器,展開相應(yīng)的服務(wù)器組和服務(wù)器節(jié)點(diǎn)。2)單擊并展開“安全性”節(jié)點(diǎn),右擊“登錄”項(xiàng),在彈出的快捷菜單中執(zhí)行“新建登錄”命令,出現(xiàn) “新建登錄”對(duì)話框。3)在“名稱”輸入框中輸入Wind
13、ows中已存在的用戶賬號(hào)或工作組名稱,這里輸入“users”工作組。4)在“身份驗(yàn)證”單選按鈕組中選中“Windows身份驗(yàn)證”單選項(xiàng),表示該登錄使用Windows身份驗(yàn)證。5)在“域”輸入框中輸入或選擇一個(gè)使用的域名。這里輸入“BUILTIN”,表示內(nèi)置本地組。6)在“默認(rèn)設(shè)置”欄的“數(shù)據(jù)庫”列表框中選擇一個(gè)默認(rèn)的數(shù)據(jù)庫。7)單擊“確定”按鈕,即可將Windows工作組users映射成SQL Server的登錄帳戶。第11章安全管理2. 使用T-SQL語言創(chuàng)建、查看、刪除SQL Server登錄帳戶 SQL Server登錄帳戶的創(chuàng)建使用系統(tǒng)存儲(chǔ)過程 sp_addlogin 可以創(chuàng)建一個(gè)登錄
14、帳戶。sp_addlogin存儲(chǔ)過程的語法形式如下:sp_addlogin login ,password ,default_databaselogin:要被創(chuàng)建的登錄帳戶。它是唯一必須給定值的參數(shù),而且必須是有效的SQL Server對(duì)象名。password:新登錄帳戶的密碼。default_database:新登錄帳戶訪問的默認(rèn)數(shù)據(jù)庫。 SQL Server登錄帳戶的查看sp_helplogins【例7-1】創(chuàng)建一個(gè)登錄帳戶為ABC,密碼為123、使用的默認(rèn)數(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”,沒有密碼和默認(rèn)數(shù)據(jù)庫的用戶EXEC sp_addlogin user01例: 2.創(chuàng)建用戶名為”user02”,密碼為”002”,默認(rèn)數(shù)據(jù)庫為”XK”的用戶EXEC sp_addlogin user02,002,Xk 登錄帳戶的刪除刪除登錄帳戶和刪除用戶相似,但刪除登錄帳戶時(shí)需要在數(shù)據(jù)庫中做較為復(fù)雜的檢查,以確保不會(huì)在數(shù)據(jù)庫中留下孤兒型的用戶。一個(gè)孤兒型的用戶是指一個(gè)用戶沒有任何登錄名與其映射。刪除一個(gè)登錄帳戶時(shí),SQL Server 必須確認(rèn)這個(gè)登錄帳戶沒有關(guān)聯(lián)的用戶存
16、在于數(shù)據(jù)庫系統(tǒng)中。如果存在用戶和被刪除的登錄名關(guān)聯(lián),SQL Server將返回錯(cuò)誤提示信息,指出數(shù)據(jù)庫中哪個(gè)用戶與被刪除的登錄帳戶相關(guān)聯(lián)。此時(shí),必須先用sp_revokedbaccess存儲(chǔ)過程將每個(gè)數(shù)據(jù)庫中與該登錄帳戶關(guān)聯(lián)的用戶對(duì)象清除,然后才能刪除登錄帳戶。如果要?jiǎng)h除的登錄帳戶是數(shù)據(jù)庫所有者,則需要使用系統(tǒng)存儲(chǔ)過程sp _changedbowner將所有權(quán)轉(zhuǎn)授給其他的登錄帳戶。刪除一個(gè)登錄帳戶使用系統(tǒng)存儲(chǔ)過程 sp_droplogin。sp_droplogin存儲(chǔ)過程的語法形式如下: 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中的操作步驟如下: 啟動(dòng)SQL Server企業(yè)管理器。展開服務(wù)器后,展開“安全性”文件夾。 點(diǎn)擊“登錄”圖標(biāo),右擊要右邊的窗格中授權(quán)的NT組或用戶,
18、在系統(tǒng)彈出的快捷菜單上點(diǎn)擊“屬性”。系統(tǒng)出現(xiàn)的“SQL Server 登錄屬性”窗口。 點(diǎn)擊“數(shù)據(jù)庫訪問”選項(xiàng)卡,選擇該NT用戶組或用戶可以訪問的數(shù)據(jù)庫,并可選擇其在該數(shù)據(jù)庫中允許擔(dān)任的數(shù)據(jù)庫角色。應(yīng)該注意的是,在選擇該登錄可以訪問的數(shù)據(jù)庫的同時(shí),企業(yè)管理器將創(chuàng)建與登錄名完全相同的數(shù)據(jù)庫用戶。 點(diǎn)擊“確定”,一個(gè)NT組或用戶就增加到SQL Server中登錄帳戶中去了。2. 用企業(yè)管理器創(chuàng)建、刪除SQL服務(wù)器登錄帳戶 用企業(yè)管理器創(chuàng)建SQL服務(wù)器登錄帳戶其具體執(zhí)行步驟如下:()打開企業(yè)管理器,單擊需要登錄的服務(wù)器左邊的“+”號(hào),然后展開安全性文件夾。 ()用右鍵單擊登錄(login)圖標(biāo),從快
19、捷菜單中選擇新建登錄(new login)選項(xiàng),則出現(xiàn)SQL Server登錄屬性新建登錄對(duì)話框,如圖所示。(3)在名稱編輯框中輸入登錄名,在身份驗(yàn)證選項(xiàng)欄中選擇新建的用戶帳號(hào)是Windows NT認(rèn)證模式,還是SQL Server認(rèn)證模式。 ()選擇服務(wù)器角色頁框,如圖所示。在服務(wù)器角色列表框中,列出了系統(tǒng)的固定服務(wù)器角色。 ()選擇數(shù)據(jù)庫訪問頁框,如圖所示。上面的列表框列出了該帳號(hào)可以訪問的數(shù)據(jù)庫,單擊數(shù)據(jù)庫左邊的復(fù)選框,表示該用戶可以訪問相應(yīng)的數(shù)據(jù)庫以及該帳號(hào)在數(shù)據(jù)庫中的用戶名。 ()設(shè)置完成后,單擊“確定”按鈕即可完成登錄帳號(hào)的創(chuàng)建。 圖6-2 新建登錄帳號(hào)對(duì)話框圖6-3 服務(wù)器角色對(duì)
20、話框 圖6-4 數(shù)據(jù)庫訪問對(duì)話框使用SQL Server的創(chuàng)建登錄向?qū)Чぞ邉?chuàng)建登錄帳號(hào)。其具體操作過程如下:圖6-5 歡迎使用創(chuàng)建登錄向?qū)?duì)話框圖6-6 選擇身份驗(yàn)證模式對(duì)話框圖6-7 選擇對(duì)用戶帳號(hào)的安全性設(shè)置對(duì)話框圖6-8 輸入登錄信息對(duì)話框 圖6-9 選擇安全性角色對(duì)話框圖6-10 選擇允許登錄帳號(hào)訪問的數(shù)據(jù)庫對(duì)話框 圖6-11 完成創(chuàng)建登錄向?qū)?duì)話框2. 用企業(yè)管理器創(chuàng)建、刪除SQL服務(wù)器登錄帳戶 用企業(yè)管理器創(chuàng)建SQL服務(wù)器登錄帳戶用企業(yè)管理器創(chuàng)建SQL服務(wù)器登錄帳戶的具體步驟如下: 啟動(dòng)SQL服務(wù)器企業(yè)管理器。 單擊要連接的服務(wù)器左側(cè)的加號(hào)連接該服務(wù)器。 單擊“安全性”文件夾左側(cè)的
21、加號(hào),將“安全性”文件夾展開。 右擊“登錄”,選擇“新建登錄”菜單項(xiàng),進(jìn)入如圖7-4“SQL服務(wù)器登錄屬性-新建登錄”窗口。 選擇一種身份驗(yàn)證模式,如選擇窗口驗(yàn)證模式,則需要選擇域名,再點(diǎn)擊名稱欄右邊“”按鈕,在你選擇的域中選擇一帳戶,然后指定該帳戶默認(rèn)登錄的數(shù)據(jù)庫和默認(rèn)語言;如選擇SQL服務(wù)器驗(yàn)證模式,則需要輸入登錄帳戶名稱、密碼及確認(rèn)密碼。點(diǎn)擊“服務(wù)器角色”選項(xiàng)卡可授與該登錄用戶服務(wù)器范圍內(nèi)的權(quán)限,點(diǎn)擊“數(shù)據(jù)庫訪問” 選項(xiàng)卡,可指定該登錄用戶可以訪問的數(shù)據(jù)庫。 單擊“確定”按鈕即可增加一個(gè)登錄帳戶。3. 查看及刪除登錄帳戶一個(gè)新的登錄帳戶增加后,可以在企業(yè)管理器中查看其詳細(xì)信息。查看一個(gè)帳
22、戶的步驟如下: 啟動(dòng)SQL服務(wù)器企業(yè)管理器,并展開到“安全性”。 點(diǎn)擊“登錄”,右邊窗格顯示的是當(dāng)前以“域名登錄名”(領(lǐng)土login)格式顯示的登錄帳戶的列表。 右擊該窗口中的某一登錄帳戶,在系統(tǒng)彈出的菜單上點(diǎn)擊“屬性”可進(jìn)入“SQL當(dāng)仆人登錄屬性”窗口查看該登錄帳戶的信息;點(diǎn)擊“刪除”可以刪除該登錄帳戶。本節(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ù)器中兩個(gè)容易混淆的
23、概念。在數(shù)據(jù)庫中,一個(gè)用戶或工作組取得合法的登錄帳號(hào),只表明該帳號(hào)通過了Windows NT認(rèn)證或者SQL Server認(rèn)證,但不能表明其可以對(duì)數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)庫對(duì)象進(jìn)行某種或者某些操作,只有當(dāng)他同時(shí)擁有了用戶帳號(hào)后,才能夠訪問數(shù)據(jù)庫。 利用企業(yè)管理器可以授予SQL Server登錄訪問數(shù)據(jù)庫的許可權(quán)限。使用它可創(chuàng)建一個(gè)新數(shù)據(jù)庫用戶帳號(hào) 。登錄名是訪問SQL服務(wù)器的通行證。每個(gè)登錄名的定義存放在主人數(shù)據(jù)庫的表sysxlogins中。登錄名本身并不能讓用戶訪問服務(wù)器中的數(shù)據(jù)庫資源。要訪問特定的數(shù)據(jù)庫,還必須有數(shù)據(jù)庫用戶名。新的登錄創(chuàng)建以后,才能創(chuàng)建用戶,用戶在特定的數(shù)據(jù)庫內(nèi)創(chuàng)建,必須和一個(gè)登錄名
24、相關(guān)聯(lián)。用戶的定義信息存放在與其相關(guān)的數(shù)據(jù)庫的sysusers表中。這個(gè)表包含了該數(shù)據(jù)庫的所有用戶對(duì)象以及和它們相對(duì)應(yīng)的登錄名的標(biāo)識(shí)。用戶名沒有密碼和它相關(guān)聯(lián)。大多數(shù)情況下,登錄名和用戶名使用相同的名稱。在SQL服務(wù)器中,登錄帳戶和數(shù)據(jù)庫用戶是SQL服務(wù)器進(jìn)行權(quán)限管理的兩種不同的對(duì)象。一個(gè)登錄帳戶可以與服務(wù)器上的所有數(shù)據(jù)庫進(jìn)行關(guān)聯(lián),而數(shù)據(jù)庫用戶是一個(gè)登錄帳戶在某個(gè)數(shù)據(jù)庫中的映射,也就是說一個(gè)登錄帳戶可以映射到不同的數(shù)據(jù)庫,產(chǎn)生多個(gè)數(shù)據(jù)庫用戶,一個(gè)數(shù)據(jù)庫用戶只能映射到一個(gè)登錄帳戶。允許數(shù)據(jù)庫為每個(gè)用戶對(duì)象分配不同的權(quán)限,這一特點(diǎn)為在組內(nèi)分配權(quán)限提供了最大的自由度。 本節(jié)首頁7.3.2 用T-SQ
25、L語句創(chuàng)建、查看、刪除數(shù)據(jù)庫用戶登錄帳戶成功創(chuàng)建后,怎樣才能將登錄帳戶映射到數(shù)據(jù)庫中的用戶上呢?如果使用企業(yè)管理器創(chuàng)建登錄帳戶,可以省略這步操作。但要注意,實(shí)際上它完成了兩步不同的操作:第一步是創(chuàng)建登錄帳戶,第二步是將登錄帳戶映射為數(shù)據(jù)庫中同名的用戶。為一個(gè)登錄帳戶授權(quán),最常使用的方法是創(chuàng)建一個(gè)新的數(shù)據(jù)庫用戶,然后將其與一個(gè)登錄帳戶對(duì)應(yīng)起來。1. 用T-SQL語句創(chuàng)建數(shù)據(jù)庫用戶使用系統(tǒng)存儲(chǔ)過程sp_grantdbaccess可以在當(dāng)前數(shù)據(jù)庫中添加一個(gè)用戶安全帳戶,并使其能夠被授予在數(shù)據(jù)庫中執(zhí)行活動(dòng)的權(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】在混合驗(yàn)證模式下,為數(shù)據(jù)庫JWGL登錄帳戶”ABC”和“a1”和a2創(chuàng)建一個(gè)同名的數(shù)據(jù)庫用戶。use jwglgoexec sp_grantbaccess ABCexec sp_grantdbaccess a1exec sp_grantdbaccess a2【例】 在Educational數(shù)據(jù)庫中為Useredu登錄賬號(hào)創(chuàng)建一個(gè)名為
27、U_edu的用戶賬號(hào)。USE EducationalEXEC sp_grantdbaccess Useredu, U_edu2. 用T-SQL語句查看數(shù)據(jù)庫用戶使用系統(tǒng)存儲(chǔ)過程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)需要撤消某一登錄用戶對(duì)指
28、定數(shù)據(jù)庫的訪問權(quán)限時(shí),最簡(jiǎn)單的辦法就是在該數(shù)據(jù)庫中刪除該登錄用戶在指定數(shù)據(jù)庫中的用戶賬號(hào)。用辦理-SQL的sp_revokedbaccess存儲(chǔ)過程可以刪除數(shù)據(jù)庫用戶。這個(gè)存儲(chǔ)過程從數(shù)據(jù)庫中將用戶刪除,即從sysusers表中刪除用戶名。但在用戶定義事務(wù)內(nèi)部不能執(zhí)行存儲(chǔ)過程sp_revokedbaccess。sp_revokedbaccess存儲(chǔ)過程具體語法如下:sp_revokedbaccess name_in_db = 名字在以上語法形式中:? 名字:要?jiǎng)h除的用戶名。名字可以是SQL服務(wù)器的用戶名或存在于當(dāng)前數(shù)據(jù)庫中的窗口NT的用戶名或組名。注意,sp_revokedbaccess 存儲(chǔ)過
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用戶賬號(hào)。USE EducationalEXEC sp_revokedbaccess U_edu7.3.3 使用企業(yè)管理器創(chuàng)建、查看、刪除數(shù)據(jù)庫用戶1. 使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫用戶與查看在SQL服務(wù)器的企業(yè)管理器中用以下步驟完成同樣的任務(wù): 啟動(dòng)企業(yè)管理器。 展開要操作的服務(wù)器及要
30、創(chuàng)建用戶的數(shù)據(jù)庫。 點(diǎn)擊“用戶”,右邊窗格可以查看到該數(shù)據(jù)庫的用戶。 右擊“用戶”文件夾,選擇“新建數(shù)據(jù)庫用戶”,彈出“新建用戶”的窗口。 輸入要?jiǎng)?chuàng)建的數(shù)據(jù)庫用戶的名字,然后在下拉的列表中選擇對(duì)應(yīng)的登錄名。 單擊“確定”按鈕,將用戶添加到數(shù)據(jù)庫中。2. 使用企業(yè)管理器刪除數(shù)據(jù)庫用戶在企業(yè)管理器中用以下的步驟刪除用戶名: 啟動(dòng)企業(yè)管理器。 展開要操作的服務(wù)器及要?jiǎng)h除用戶所在的數(shù)據(jù)庫。 單擊“用戶”,右邊顯示該數(shù)據(jù)庫所有的庫用戶。 右擊要?jiǎng)h除的用戶,在系統(tǒng)彈出的快捷菜單上選擇“刪除”來刪除這個(gè)用戶。 本節(jié)首頁7.3.4 改變數(shù)據(jù)庫所有權(quán)在數(shù)據(jù)庫中有一個(gè)用戶是數(shù)據(jù)庫所有者(database owne
31、r, dbo),擁有數(shù)據(jù)庫中所有的對(duì)象.只能有一個(gè)數(shù)據(jù)庫所有者.數(shù)據(jù)庫所有者不能被刪除. 通常,登錄名s a映射在庫中的用戶是d b o.必須使用s p _ c h a n g e d b o w n e r存儲(chǔ)過程來改變數(shù)據(jù)庫所有權(quán).這個(gè)存儲(chǔ)過程是唯一改變數(shù)據(jù)庫所有權(quán)的方法,在企業(yè)管理器中沒有類似功能. 這個(gè)存儲(chǔ)過程只有一個(gè)參數(shù),即新的所有者的登錄標(biāo)識(shí).然后登錄標(biāo)識(shí)將映射到d b o用戶名上.本節(jié)首頁7.4 角色管理管理用戶是一件令人頭疼的事情.最大的麻煩在于要確保用戶能夠訪問到他們需要的數(shù)據(jù)但又不能獲得超出他們權(quán)限范圍的數(shù)據(jù).幸運(yùn)的是,用戶一般在組中工作.也就是說可以將在相同數(shù)據(jù)上有相同權(quán)
32、限的用戶放入組中進(jìn)理.SQLServer具有將用戶分配到組中的能力,分配給組的權(quán)限也適用于組中的每一個(gè)成員. 本章首頁角色是從SQL Server 7.0版本開始引進(jìn)的新概念,它代替了以前版本中組的概念。利用角色,SQL Server管理者可以將某些用戶設(shè)置為某一角色,這樣只對(duì)角色進(jìn)行權(quán)限設(shè)置便可以實(shí)現(xiàn)對(duì)所有用戶權(quán)限的設(shè)置,大大減少了管理員的工作量。SQL Server提供了用戶通常管理工作的預(yù)定義服務(wù)器角色和數(shù)據(jù)庫角色。 1、服務(wù)器角色 服務(wù)器角色是指根據(jù)SQL Server的管理任務(wù),以及這些任務(wù)相對(duì)的重要性等級(jí)來把具有SQL Server管理職能的用戶劃分為不同的用戶組,每一組所具有的管
33、理SQL Server的權(quán)限都是SQL Server內(nèi)置的,即不能對(duì)其進(jìn)行添加、修改和刪除,只能向其中加入用戶或者其他角色。 七種常用的固定服務(wù)器角色 系統(tǒng)管理員:擁有SQL Server所有的權(quán)限許可。服務(wù)器管理員:管理SQL Server服務(wù)器端的設(shè)置。磁盤管理員:管理磁盤文件。進(jìn)程管理員:管理SQL Server系統(tǒng)進(jìn)程。安全管理員:管理和審核SQL Server系統(tǒng)登錄。安裝管理員:增加、刪除連接服務(wù)器,建立數(shù)據(jù)庫復(fù)制以及管理擴(kuò)展存儲(chǔ)過程。數(shù)據(jù)庫創(chuàng)建者:創(chuàng)建數(shù)據(jù)庫,并對(duì)數(shù)據(jù)庫進(jìn)行修改。固定服務(wù)器角色存放在主人數(shù)據(jù)庫的sysxlogins表中。執(zhí)行存儲(chǔ)過程sp_helpsrvrole,可
34、查看服務(wù)器上的固定服務(wù)器角色,要查看某個(gè)固定服務(wù)器角色的權(quán)限可執(zhí)行存儲(chǔ)過程sp_srvrolepermission。如在查詢分析器中執(zhí)行語句:實(shí)行sp_srvrolepermission sysadmin,可查看固定服務(wù)器角色sysadmin的權(quán)限。2. 為登錄帳戶指定及收回服務(wù)器角色使用sp_addsrvrolemember存儲(chǔ)過程或企業(yè)管理器可為一個(gè)登錄帳戶指定服務(wù)器角色。 使用系統(tǒng)存儲(chǔ)過程為登錄帳戶指定及收回服務(wù)器角色、指定服務(wù)器角色的系統(tǒng)存儲(chǔ)過程是sp_addsrvrolemember,具體語法如下: sp_addsrvrolemember 登錄,角色? 登錄:是指登錄名。? 角色:是
35、指服務(wù)器角色名。收回服務(wù)器角色的系統(tǒng)存儲(chǔ)過程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ù)器角色增加成員的步驟如下: 啟動(dòng)企業(yè)管理器。 展開要操作的服務(wù)器、展開“安全性”文件夾。
36、點(diǎn)擊“安全性”節(jié)點(diǎn)下的“服務(wù)器角色”,右邊窗格將顯示系統(tǒng)的8個(gè)服務(wù)器角色。 右擊要添加登錄到的服務(wù)器角色(如sysadmin),選擇“屬性”,系統(tǒng)將彈出如圖7-5的 如要收回某登錄帳戶的服務(wù)器角色,只需從圖7-5中選擇該登錄帳戶,然后點(diǎn)擊“刪除”即可。 如要為登錄帳戶指定服務(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)將自動(dòng)創(chuàng)建如表7-2
37、所示的10個(gè)固定的數(shù)據(jù)庫角色。表7-2 固定數(shù)據(jù)庫角色及功能 角色 功能公眾維護(hù)默認(rèn)的許可db_owner 數(shù)據(jù)庫屬主,在特定數(shù)據(jù)庫內(nèi)具有全部權(quán)限db_accessadmin 能夠添加、刪除數(shù)據(jù)庫用戶和角色db_securityadmin 可以管理全部權(quán)限、對(duì)象所有權(quán)、角色和角色成員資格db_ddladmin 能夠添加、刪除和修改數(shù)據(jù)庫對(duì)象。db_backupoperator能夠備份和恢復(fù)數(shù)據(jù)庫。db_datareader 能夠從任意表中讀出數(shù)據(jù)。db_datawriter 能夠?qū)θ我獗聿迦?、修改和刪除數(shù)據(jù)。db_denydatareader 不允許從表中讀數(shù)據(jù)。db_denydatawrit
38、er 不允許改變表中的數(shù)據(jù)。公眾角色是一個(gè)特殊的數(shù)據(jù)庫角色,數(shù)據(jù)庫中的每位用戶都是公眾角色的成員,它負(fù)責(zé)維護(hù)數(shù)據(jù)庫中用戶的全部默認(rèn)許可,不能將用戶和組或角色指定公眾角色。在使用NT驗(yàn)證模式時(shí),推薦使用企業(yè)管理器將窗口NT的組加入到指定的數(shù)據(jù)庫中并為NT組成員提供登錄名和數(shù)據(jù)庫用戶名,在這里,用戶被定義成某種數(shù)據(jù)庫角色。利用這種方法,數(shù)據(jù)庫管理員可以減輕創(chuàng)建組時(shí)的工作量。要瀏覽數(shù)據(jù)庫固定數(shù)據(jù)庫角色,可執(zhí)行系統(tǒng)存儲(chǔ)過程:實(shí)行sp_helpfixesrole有如下幾點(diǎn)需要注意:數(shù)據(jù)庫角色在數(shù)據(jù)庫級(jí)別上被定義,存在于數(shù)據(jù)庫之內(nèi)。數(shù)據(jù)庫角色存放在每個(gè)數(shù)據(jù)庫sysusers表中固定數(shù)據(jù)庫角色不能被刪除、修
39、改、創(chuàng)建固定數(shù)據(jù)庫角色可以指定給其它登錄帳戶()用戶自定義角色 創(chuàng)建用戶定義的數(shù)據(jù)庫角色就是創(chuàng)建一組用戶,這些用戶具有相同的一組許可。如果一組用戶需要執(zhí)行在SQL Server中指定的一組操作并且不存在對(duì)應(yīng)的Windows NT組,或者沒有管理Windows NT用戶帳號(hào)的許可,就可以在數(shù)據(jù)庫中建立一個(gè)用戶自定義的數(shù)據(jù)庫角色。用戶自定義的數(shù)據(jù)庫角色有兩種類型:即標(biāo)準(zhǔn)角色和應(yīng)用程序角色。標(biāo)準(zhǔn)角色和應(yīng)用程序角色 標(biāo)準(zhǔn)角色通過對(duì)用戶權(quán)限等級(jí)的認(rèn)定而將用戶劃分為不用的用戶組,使用戶總是相對(duì)于一個(gè)或多個(gè)角色,從而實(shí)現(xiàn)管理的安全性。 應(yīng)用程序角色是一種比較特殊的角色。當(dāng)我們打算讓某些用戶只能通過特定的應(yīng)用
40、程序間接地存取數(shù)據(jù)庫中的數(shù)據(jù)而不是直接地存取數(shù)據(jù)庫數(shù)據(jù)時(shí),就應(yīng)該考慮使用應(yīng)用程序角色。當(dāng)某一用戶使用了應(yīng)用程序角色時(shí),他便放棄了已被賦予的所有數(shù)據(jù)庫專有權(quán)限,他所擁有的只是應(yīng)用程序角色被設(shè)置的角色。sp_addrole:用來創(chuàng)建一個(gè)新的數(shù)據(jù)庫角色sp_addrole role,ownersp_droprole:用于刪除一個(gè)數(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)建一個(gè)名為eduManagers的數(shù)據(jù)庫角色。USE EducationalEXEC sp_addrole eduManagers, U_edu【例7-6】增加一個(gè)叫AAA的自定義數(shù)據(jù)庫角色。 sp_addrole AAA ,dbo例 1.使用系統(tǒng)存儲(chǔ)過程添加名為”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)用程序角色例 使用存儲(chǔ)過程,在XK數(shù)據(jù)庫中添加一個(gè)名為”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,默認(rèn)數(shù)據(jù)庫為XK,并能連接到XK數(shù)據(jù)庫的用戶.EXEC sp_addlogin user01,001,XkUSE XkEXEC sp_grantdbaccess user01, user014.以u(píng)ser01身份連接另一查詢分析器窗口5.在新的查詢分析器窗口中運(yùn)行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)建的步驟如下: 啟動(dòng)企業(yè)管理器。 展開要操作的服務(wù)器、展開想添加角色的數(shù)據(jù)庫。 右擊“角色”文件夾并選擇“新建數(shù)據(jù)庫角色”,系統(tǒng)將彈出如圖7-6(P128)的“數(shù)據(jù)庫角色-新建角色”的對(duì)話窗口。 輸入角色名。 選擇作為角色成員的用戶。單擊“添加”按鈕。用戶被顯示在“用戶”列表框內(nèi)。選中相應(yīng)的用戶并單擊“確定”按鈕將它們加入到角色中。 再次單擊“確定”按鈕,退出“數(shù)據(jù)庫角色-新建角色”窗口。 刪除自定義數(shù)據(jù)庫角色用戶自定義數(shù)據(jù)庫角色可以刪除,從數(shù)據(jù)庫中刪除“角色”和從數(shù)據(jù)庫中刪除用戶非常相似。但是,和固定服務(wù)器角色一樣,固定數(shù)據(jù)庫角色不能被刪除。使用系統(tǒng)存儲(chǔ)過程刪除
45、自定義數(shù)據(jù)庫角色刪除自定義數(shù)據(jù)庫角色的系統(tǒng)存儲(chǔ)過程是sp_droprole,其語法形式如下: sp_droprole 角色? 角色:要?jiǎng)h除的自定義數(shù)據(jù)庫角色。在執(zhí)行sp_droprole時(shí)要注意的一點(diǎn)是:要?jiǎng)h除的角色必須沒有成員。被刪除角色中的所有成員必須刪除或被事先改變到其他的角色中。如果使用sp_droprole去刪除一個(gè)非空的角色時(shí),系統(tǒng)將會(huì)給出如下的錯(cuò)誤信息:服務(wù)器: 消息 15144,級(jí)別 16,狀態(tài) 1,過程 sp_droprole,行 53該角色有成員。角色必須為空白后才能除去。使用企業(yè)管理器刪除自定義數(shù)據(jù)庫角色 啟動(dòng)企業(yè)管理器。 展開需要操作的服務(wù)器并展開要操作的數(shù)據(jù)庫。 展開
46、“角色”,右擊要?jiǎng)h除的自定義數(shù)據(jù)庫角色,在系統(tǒng)彈出的快捷菜單中選擇“刪除”。確認(rèn)“刪除”操作,如該角色無成員,該角色將被刪除,如該角色有成員,系統(tǒng)將給出提示。3. 為數(shù)據(jù)庫角色添加及刪除成員使用系統(tǒng)存儲(chǔ)過程或企業(yè)管理器為一個(gè)數(shù)據(jù)庫角色添加及刪除成員。 使用系統(tǒng)存儲(chǔ)過程為數(shù)據(jù)庫角色增加及刪除成員系統(tǒng)存儲(chǔ)過程sp_addrolemembe可為數(shù)據(jù)庫角色增加成員,sp_addrolemember存儲(chǔ)過程的具體語法如下:sp_addrolemember 角色,security_account ? 角色:數(shù)據(jù)庫角色名。? security_account:數(shù)據(jù)庫用戶名。系統(tǒng)存儲(chǔ)過程sp_droprole
47、membe可為數(shù)據(jù)庫角色刪除成員,sp_droprolemember存儲(chǔ)過程的具體語法如下:sp_addrolemember 角色,security_account 角色及security_account參數(shù)的含義同上。【例7-7】使用系統(tǒng)存儲(chǔ)過程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)存儲(chǔ)過程sp_addrolemember將SQL Server用戶 user01添加到Xk數(shù)據(jù)庫中的Role01角色。USE XkGOEXEC sp_addrolemember Role01, user01【例】使用系統(tǒng)存儲(chǔ)過程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ù)庫角色增加及刪除成員的具體步驟如下: 啟動(dòng)企業(yè)管理器。 展開要操作的服務(wù)器并展開要添加用戶的數(shù)據(jù)庫。 單擊“角色”文件夾,右邊窗格出現(xiàn)該數(shù)據(jù)庫的所有角色列表,右擊某個(gè)角色并選擇“屬性”。系統(tǒng)將彈出類似圖7-6(P128)那樣的“數(shù)據(jù)庫角色屬性”對(duì)話窗口。 如要?jiǎng)h除該數(shù)據(jù)庫角色的某個(gè)成員,可點(diǎn)擊該成員,再點(diǎn)擊“刪除”即可。 如要為該數(shù)據(jù)庫角色添加成員,單擊“添加”按鈕,出現(xiàn)“添加角色成員”窗口。
50、 在“添加角色成員”窗口中,選擇某一用戶并單擊“確定”按鈕將它們加入到組中。 在用戶增加完后,單擊“確定”按鈕,一個(gè)數(shù)據(jù)庫角色的成員就添加進(jìn)去了。 本節(jié)首頁7. 5 權(quán)限(許可)管理7.5.1 許可類型7.5.2 許可的驗(yàn)證7.5.3 管理許可 本章首頁許可用來指定授權(quán)用戶可以使用的數(shù)據(jù)庫對(duì)象和這些授權(quán)用戶可以對(duì)這些數(shù)據(jù)庫對(duì)象執(zhí)行的操作。用戶在登錄到SQL Server之后,其用戶帳號(hào)所歸屬的NT組或角色所被賦予的許可(權(quán)限)決定了該用戶能夠?qū)δ男?shù)據(jù)庫對(duì)象執(zhí)行哪種操作以及能夠訪問、修改哪些數(shù)據(jù)。在每個(gè)數(shù)據(jù)庫中用戶的許可獨(dú)立于用戶帳號(hào)和用戶在數(shù)據(jù)庫中的角色,每個(gè)數(shù)據(jù)庫都有自己獨(dú)立的許可系統(tǒng),在
51、SQL Server中包括三種類型的許可:即對(duì)象許可、語句許可和預(yù)定義許可。 7.5.1三種許可類型1、對(duì)象許可表示對(duì)特定的數(shù)據(jù)庫對(duì)象,即表、視圖、字段和存儲(chǔ)過程的操作許可,它決定了能對(duì)表、視圖等數(shù)據(jù)庫對(duì)象執(zhí)行哪些操作。 2、語句許可表示對(duì)數(shù)據(jù)庫的操作許可,也就是說,創(chuàng)建數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫中的其它內(nèi)容所需要的許可類型稱為語句許可。3、默認(rèn)(預(yù)定義)許可是指系統(tǒng)安裝以后有些用戶和角色不必授權(quán)就有的許可。 1. 默認(rèn)許可SQL服務(wù)器中包含很多對(duì)象,每個(gè)對(duì)象都有一個(gè)屬主。一般來說,對(duì)象的屬主是創(chuàng)建該對(duì)象的用戶。如果系統(tǒng)管理員創(chuàng)建了一個(gè)數(shù)據(jù)庫,系統(tǒng)管理員就是這個(gè)數(shù)據(jù)庫的屬主。如果一個(gè)用戶創(chuàng)建了一個(gè)表
52、,這個(gè)用戶就是這個(gè)表的屬主。很顯然,系統(tǒng)管理員具有這個(gè)數(shù)據(jù)庫的全部操作權(quán)限,創(chuàng)建表的用戶具有這個(gè)表全部操作權(quán)限。這就是數(shù)據(jù)庫對(duì)象的默認(rèn)許可。默認(rèn)許可也稱為暗指許可。數(shù)據(jù)庫中的用戶根據(jù)它們?cè)跀?shù)據(jù)庫中的角色被設(shè)定了某些缺省權(quán)限,也就意味著這些用戶獲得某些默認(rèn)許可。這樣的用戶有四類:第一類,系統(tǒng)管理員,可以創(chuàng)建和刪除數(shù)據(jù)庫,配置服務(wù)器。系統(tǒng)管理員永遠(yuǎn)擁有主人數(shù)據(jù)庫;第二類,數(shù)據(jù)庫屬主,可以創(chuàng)建和管理數(shù)據(jù)庫中的對(duì)象以及管理整個(gè)數(shù)據(jù)庫;第三類,對(duì)象屬主,是特定對(duì)象的屬主。對(duì)數(shù)據(jù)庫來說,dbo就是對(duì)象屬主。一個(gè)對(duì)象屬主可以在對(duì)象上進(jìn)行授予或回收權(quán)限的操作而且可以刪除對(duì)象;第四類,數(shù)據(jù)庫用戶,其默認(rèn)許可取決
53、于創(chuàng)建數(shù)據(jù)庫用戶時(shí)的設(shè)置。2. 對(duì)象許可對(duì)象許可是指用戶基于數(shù)據(jù)庫層次上的訪問和操作權(quán)限,如果沒有對(duì)象的許可,用戶將不能訪問該對(duì)象。對(duì)象許可有五種:查詢、插入、修改、刪除和執(zhí)行。前四個(gè)許可是用于表和視圖的,執(zhí)行許可只用于存儲(chǔ)過程。選擇:該許可授予數(shù)據(jù)庫中某個(gè)特定表的用戶,具備這種許可的用戶才能訪問、操作該表的數(shù)據(jù)。插入:該許可授予數(shù)據(jù)庫中某個(gè)特定表的用戶可以向表中插入數(shù)據(jù)。更新:該許可授予數(shù)據(jù)庫中某個(gè)特定表的用戶可以對(duì)表中的數(shù)據(jù)進(jìn)行更新。刪除:該許可授予數(shù)據(jù)庫中某個(gè)特定表的用戶可以刪除表中的數(shù)據(jù)。執(zhí)行:該許可授予數(shù)據(jù)庫中某個(gè)特定的用戶,具有這種許可的用戶可以執(zhí)行存儲(chǔ)過程。3.語句許可語句許可通
54、常授予需要在數(shù)據(jù)庫中創(chuàng)建對(duì)象或修改對(duì)象、執(zhí)行數(shù)據(jù)庫和事務(wù)日志備份的用戶。如果一個(gè)用戶獲得某個(gè)語句的許可,該用戶就具有了執(zhí)行該語句的權(quán)力。以下是需要進(jì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)建存儲(chǔ)過程的操作。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)建和刪除對(duì)象、備份和恢復(fù)數(shù)據(jù)庫。本節(jié)首頁7.5.2 許可的驗(yàn)證針對(duì)每一個(gè)數(shù)據(jù)庫及數(shù)據(jù)庫對(duì)象,管理員為用戶指定了執(zhí)行某些操作的許可。當(dāng)用戶執(zhí)行某個(gè)操作時(shí),系統(tǒng)首先進(jìn)行許可檢查,用戶獲得許可,可以執(zhí)行該操作,否則,不允許執(zhí)行該操作,系統(tǒng)返回錯(cuò)誤信息。SQL服務(wù)器2000進(jìn)行許可驗(yàn)證的步驟如下: 用戶執(zhí)行某項(xiàng)操作,相應(yīng)的SQL語句通過網(wǎng)絡(luò)發(fā)送到SQL服務(wù)器服務(wù)器。 SQL服務(wù)器服務(wù)器收到SQL語句后,檢查該用戶是否具有對(duì)操作對(duì)象的許可權(quán)限及執(zhí)行這些語句的權(quán)限。 如果SQL服務(wù)器服務(wù)器許可驗(yàn)證通過,SQL服務(wù)器系統(tǒng)執(zhí)
56、行相應(yīng)的操作,否則,系統(tǒng)給出錯(cuò)誤信息。本節(jié)首頁7.5.3 管理許可1. 管理許可的用戶以下的四種用戶可以對(duì)部分或全部語句授權(quán):系統(tǒng)管理員(系統(tǒng)管理員):有sa帳戶或具有相同權(quán)限的用戶數(shù)據(jù)庫的屬主(數(shù)據(jù)庫所有者):當(dāng)前數(shù)據(jù)庫的擁有者對(duì)象的屬主(物體所有者):當(dāng)前對(duì)象的擁有者數(shù)據(jù)庫用戶(使用者):不屬于以上用戶的其他用戶2. 許可的狀態(tài)授予許可:授予允許用戶帳戶執(zhí)行某些操作的語句權(quán)限和對(duì)象權(quán)限禁止許可:禁止某些用戶或角色的權(quán)限,刪除以前授予用戶、組或角色的權(quán)限,停用從其它角色繼承的權(quán)限并確保用戶、組或角色不繼承更高級(jí)別的組或角色的權(quán)限。 撤消許可:可以廢除以前授予或禁止的權(quán)限。撤消許可類似于禁止許
57、可,二者都是在同一級(jí)別上刪除已授予的權(quán)限。但是,撤消許可是刪除已授予的許可,并不妨礙用戶、組或角色從更高級(jí)別繼承已授予的許可。許可的授予、撤消及禁止只能在當(dāng)前數(shù)據(jù)庫中進(jìn)行。許可的管理 1. 使用SQL Server 企業(yè)管理器管理許可 SQL Server 可通過兩種途徑:即面向單一用戶和面向數(shù)據(jù)庫對(duì)象的許可設(shè)置,來實(shí)現(xiàn)對(duì)語句許可和對(duì)象許可的管理,從而實(shí)現(xiàn)對(duì)用戶許可的設(shè)定。Transaction_SQL 語句使用grant、revoke和deny三種命令來實(shí)現(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)建存儲(chǔ)過程Create index:創(chuàng)建索引Backup database:備份數(shù)據(jù)庫Backup log:備份事務(wù)日志 授予許可授予許可使用的是授予語句,其語法形式如下: 授予 在 到 grant on to 上面語法中:? permission:可以是相應(yīng)對(duì)象的任何有效權(quán)限的組合??梢允褂藐P(guān)鍵字全部的來替代權(quán)限組合表示所有權(quán)限。? object:被授權(quán)的對(duì)象。這個(gè)對(duì)象可以是一個(gè)表,視圖,表或視
59、圖中的一組列,或一個(gè)存儲(chǔ)過程。? user:被授權(quán)的一個(gè)或多個(gè)用戶,或組。【例7-8】授予用戶a1,a2在數(shù)據(jù)庫JWGL中創(chuàng)建表及對(duì)表學(xué)生具有查詢、刪除權(quán)的許可。grant create table to a1grant select , delete on student to a2【例】授予U_edu用戶對(duì)表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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 管道工程社會(huì)責(zé)任與企業(yè)文化建設(shè)考核試卷
- 糖批發(fā)企業(yè)品牌推廣策略考核試卷
- 刨花板生產(chǎn)過程中的質(zhì)量控制與品質(zhì)提升考核試卷
- 機(jī)電組件的綠色制造與循環(huán)經(jīng)濟(jì)考核試卷
- 航空器維修與故障排除考核試卷
- 跨境電商與國際市場(chǎng)的投資機(jī)遇與風(fēng)險(xiǎn)考核試卷
- 營(yíng)養(yǎng)師職業(yè)素養(yǎng)與倫理考核試卷
- 鹽的采集與利用中的產(chǎn)品質(zhì)量控制考核試卷
- 貨運(yùn)火車站操作規(guī)程與實(shí)踐考核試卷
- 裝飾材料陳列展示技巧考核試卷
- 《答司馬諫議書》同步練習(xí)-統(tǒng)編版高中語文必修下冊(cè)
- 森林公安派出所臺(tái)帳全套表格模板
- CB/T 3766-1996排氣管鋼法蘭及墊片
- 11471勞動(dòng)爭(zhēng)議處理(第5章)
- 傳熱學(xué)課后習(xí)題答案
- 登臨詩 詩歌賞析
- 免修申請(qǐng)表(模板)
- 電阻的測(cè)量-伏安法的實(shí)驗(yàn)報(bào)告
- 公司應(yīng)急救援物資臺(tái)賬
- 超限梁板支撐架專項(xiàng)施工方案(濱州醫(yī)院)
- 最新中山市中小學(xué)校情況一覽表
評(píng)論
0/150
提交評(píng)論