XXXX(第2版)第15章_SQL_Server_XXXX數(shù)據(jù)庫(kù)的安全性_第1頁(yè)
XXXX(第2版)第15章_SQL_Server_XXXX數(shù)據(jù)庫(kù)的安全性_第2頁(yè)
XXXX(第2版)第15章_SQL_Server_XXXX數(shù)據(jù)庫(kù)的安全性_第3頁(yè)
XXXX(第2版)第15章_SQL_Server_XXXX數(shù)據(jù)庫(kù)的安全性_第4頁(yè)
XXXX(第2版)第15章_SQL_Server_XXXX數(shù)據(jù)庫(kù)的安全性_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第1515章章 SQL Server 2008SQL Server 2008數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)的安全性和完整性管理安全性和完整性管理15.1 15.1 數(shù)據(jù)庫(kù)安全性概述數(shù)據(jù)庫(kù)安全性概述lSQL Server的安全性管理是建立在認(rèn)證(authentication)和訪問(wèn)許可(permission)這兩種機(jī)制上的。l認(rèn)證是指確定登錄SQL Server的用戶的登錄賬號(hào)和密碼是否正確,以此來(lái)驗(yàn)證其是否具有連接SQL Server的權(quán)限。l但是,通過(guò)認(rèn)證并不代表能夠訪問(wèn)SQL Server中的數(shù)據(jù)。用戶只有在獲取訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限之后,才能夠?qū)Ψ?wù)器上的數(shù)據(jù)庫(kù)進(jìn)行權(quán)限許可下的各種操作。l用戶訪問(wèn)數(shù)據(jù)庫(kù)權(quán)限

2、的設(shè)置是通過(guò)用戶賬號(hào)來(lái)實(shí)現(xiàn)的。角色簡(jiǎn)化了安全性管理。15.1 15.1 數(shù)據(jù)庫(kù)安全性概述數(shù)據(jù)庫(kù)安全性概述l所以在SQL Server的安全模型中包括以下幾部分:l SQL Server身份驗(yàn)證;l 登錄賬戶;l 數(shù)據(jù)庫(kù)用戶;l 角色;l 權(quán)限。15.1 15.1 數(shù)據(jù)庫(kù)安全性概述數(shù)據(jù)庫(kù)安全性概述l15.1.1 15.1.1 身份驗(yàn)證簡(jiǎn)介身份驗(yàn)證簡(jiǎn)介lSQL Server支持兩種模式的身份驗(yàn)證:Windows驗(yàn)證模式、SQL Server 和Windows 混合驗(yàn)證模式。lWindows驗(yàn)證模式比起SQL Server驗(yàn)證模式來(lái)有許多優(yōu)點(diǎn)。Windows身份驗(yàn)證比SQL Server身份驗(yàn)證更加

3、安全;使用Windows身份驗(yàn)證的登錄賬戶更易于管理;用戶只需登錄Windows之后就可以使用SQL Server,只需要登錄一次。l在混合驗(yàn)證模式下,Windows驗(yàn)證和SQL Server驗(yàn)證這兩種驗(yàn)證模式都是可用的。對(duì)于SQL Server驗(yàn)證模式,用戶在連接SQL Server時(shí)必須提供登錄名和登錄密碼。15.1 15.1 數(shù)據(jù)庫(kù)安全性概述數(shù)據(jù)庫(kù)安全性概述l15.1.2 15.1.2 驗(yàn)證模式的修改驗(yàn)證模式的修改l當(dāng)安裝SQL Server時(shí),可以選擇SQL Server的身份驗(yàn)證類型。安裝完成之后也可以修改認(rèn)證模式。修改步驟如下。l(1)打開SQL Server Management

4、 Studio。l(2)在要更改的服務(wù)器上鼠標(biāo)右鍵單擊,在快捷菜單中選擇屬性,彈出服務(wù)器屬性對(duì)話框。l(3)單擊左側(cè)列表中的“安全性”項(xiàng),出現(xiàn)“安全性”頁(yè)面,如圖15.1所示。在圖中修改身份驗(yàn)證。15.1 15.1 數(shù)據(jù)庫(kù)安全性概述數(shù)據(jù)庫(kù)安全性概述圖15.1 身份驗(yàn)證15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l1創(chuàng)建Windows登錄賬戶l(1)在“對(duì)象資源管理器”中,單擊樹型目錄中的“安全性”節(jié)點(diǎn),如圖15.2所示。15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l(2)鼠標(biāo)右鍵單擊“安全性”的子節(jié)點(diǎn)“登錄名”,在快捷菜單中選擇“新建登錄名”,出現(xiàn)“登錄名-新建”對(duì)話框,如圖15.3所

5、示。15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l(3)在“登錄名”編輯框中輸入登錄名稱,輸入的登錄名必須是已存在的Windows登錄用戶??梢詥螕簟八阉鳌卑粹o,出現(xiàn)登錄“選擇用戶和組”對(duì)話框,如圖15.4所示。在對(duì)象名稱編輯框中輸入用戶或組的名稱,單擊“檢查名稱”按鈕檢查對(duì)象是否存在。輸入完成,單擊“確定”按鈕關(guān)閉選擇用戶或組對(duì)話框。 15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l(4)確認(rèn)選擇的是“Windows身份驗(yàn)證”。指定賬戶登錄的默認(rèn)數(shù)據(jù)庫(kù)。l(5) 單擊窗口左側(cè)列表中的“服務(wù)器角色”節(jié)點(diǎn),指定賬戶所屬服務(wù)器角色。l(6)單擊窗口左側(cè)列表中的“用戶映射”節(jié)點(diǎn),右側(cè)出現(xiàn)用戶映

6、射頁(yè)面??梢圆榭椿蛐薷腟QL登錄賬戶到數(shù)據(jù)庫(kù)用戶的映射。選擇此登錄賬戶可以訪問(wèn)的數(shù)據(jù)庫(kù),對(duì)具體的數(shù)據(jù)庫(kù),指定要映射到登錄名的數(shù)據(jù)庫(kù)用戶(默認(rèn)情況下,數(shù)據(jù)庫(kù)用戶名與登錄名相同)。指定用戶的默認(rèn)架構(gòu),首次創(chuàng)建用戶時(shí),其默認(rèn)架構(gòu)是dbo。l(7)設(shè)置完成單擊“確定”按鈕提交更改。15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l2創(chuàng)建SQL Server登錄賬戶l一個(gè)SQL Server登錄賬戶名是一個(gè)新的登錄賬戶,該賬戶和Windows操作系統(tǒng)的登錄賬戶沒(méi)有關(guān)系。l(1)打開新建登錄名對(duì)話框,選擇“SQL Server身份驗(yàn)證”,輸入登錄名,密碼和確認(rèn)密碼,并選擇缺省數(shù)據(jù)庫(kù),如圖15.5所示。15

7、.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l(2)設(shè)置服務(wù)器角色和用戶映射,請(qǐng)參考“創(chuàng)建Windows登錄賬戶”的步驟5和步驟6。15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l3登錄賬戶管理l創(chuàng)建登錄賬戶之后,在圖15.2所示服務(wù)器安全性展開登錄名節(jié)點(diǎn)上,鼠標(biāo)右鍵單擊相應(yīng)的賬戶,出現(xiàn)快捷菜單,如圖15.6所示,如果要修改該登錄賬戶,選擇屬性菜單;如要?jiǎng)h除該登錄賬戶,則選擇刪除菜單。15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l15.2.2 15.2.2 使用使用Transact-SQLTransact-SQL管理登錄賬戶管理登錄賬戶l在Transact-SQL中,管理登錄賬戶的SQL

8、語(yǔ)句有:CREATE LOGIN、DROP LOGIN、ALTER LOGIN。下面簡(jiǎn)要說(shuō)明如何使用T-SQL來(lái)創(chuàng)建和維護(hù)登錄賬戶。l1新建登錄賬戶CREATE LOGINl其語(yǔ)法格式為:lCREATE LOGIN login_name WITH | FROM 15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l【例15.1】創(chuàng)建帶密碼的登錄名“test”。MUST_CHANGE選項(xiàng)要求用戶首次連接服務(wù)器時(shí)更改此密碼。lCREATE LOGIN test WITH PASSWORD = 26aK MUST_CHANGEl【例15.2】從Windows域賬戶創(chuàng)建 Developmentiewang

9、jf 登錄名。lCREATE LOGIN Developmentiewangjf FROM Windows15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄l2刪除登錄賬戶DROP LOGINl其語(yǔ)法格式為:DROP LOGIN login_namel【例15.3】刪除登錄賬戶“test”。lDROP LOGIN testl3更改登錄賬戶ALTER LOGINl其語(yǔ)法格式為:lALTER LOGIN login_name l l | WITH ,. l := ENABLE | DISABLE15.2 15.2 管理服務(wù)器登錄管理服務(wù)器登錄15.3 15.3 角色和用戶管理角色和用戶管理l15.3

10、.1 15.3.1 角色管理簡(jiǎn)介角色管理簡(jiǎn)介l角色等價(jià)于Windows的工作組,將登錄名或用戶賦予一個(gè)角色,角色具有權(quán)限,登錄名或用戶作為角色成員,從而繼承了所屬角色的權(quán)限。如圖15.7所示。登錄名或用戶 角色 權(quán)限 15.3 15.3 角色和用戶管理角色和用戶管理l只需給角色指定權(quán)限,然后將登錄名或用戶指定為某個(gè)角色,而不必給每個(gè)登錄名或用戶指定權(quán)限,這樣給實(shí)際工作帶來(lái)了很大的便利。l在SQL Server中角色分為服務(wù)器角色和數(shù)據(jù)庫(kù)角色。而數(shù)據(jù)庫(kù)角色又分為固有數(shù)據(jù)庫(kù)角色、用戶自定義數(shù)據(jù)庫(kù)角色和應(yīng)用程序角色。l1服務(wù)器角色l服務(wù)器角色內(nèi)建于SQL Server,其權(quán)限無(wú)法更改,每一個(gè)角色擁有

11、一定級(jí)別的數(shù)據(jù)庫(kù)管理職能,如圖15.8所示。15.3 15.3 角色和用戶管理角色和用戶管理l服務(wù)器角色包括以下幾種。l bulkadmin:可以運(yùn)行BULK INSERT語(yǔ)句。l dbcreator:可以創(chuàng)建、更改、刪除和還原任何數(shù)據(jù)庫(kù)。l diskadmin:管理磁盤文件。l processadmin:可以終止SQL Server實(shí)例中運(yùn)行的進(jìn)程。l securityadmin:管理登錄名及其屬性。這類角色可以GRANT、DENY和REVOKE服務(wù)器級(jí)和數(shù)據(jù)庫(kù)級(jí)權(quán)限,可以重置SQL Server登錄名的密碼。l serveradmin:可以更改服務(wù)器范圍的配置選項(xiàng)和關(guān)閉服務(wù)器。l setu

12、padmin:添加和刪除鏈接服務(wù)器,并且也可以執(zhí)行某些系統(tǒng)存儲(chǔ)過(guò)程。l sysadmin:可以在服務(wù)器中執(zhí)行任何活動(dòng)。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l2固有數(shù)據(jù)庫(kù)角色l固有數(shù)據(jù)庫(kù)角色是指這些角色的數(shù)據(jù)庫(kù)權(quán)限已被SQL Server預(yù)定義,不能對(duì)其權(quán)限進(jìn)行任何修改,并且這些角色存在于每個(gè)數(shù)據(jù)庫(kù)中,如圖15.9所示。15.3 15.3 角色和用戶管理角色和用戶管理l固有數(shù)據(jù)庫(kù)角色包括以下幾種。l db_accessadmin:可以為Windows登錄賬戶、Windows 組和SQL Server登錄賬戶添加或刪除訪問(wèn)權(quán)限。l db_

13、backupoperator:可以備份該數(shù)據(jù)庫(kù)。l db_datareader:可以讀取所有用戶表中的所有數(shù)據(jù)。l db_datawriter:可以在所有用戶表中添加、刪除或更改數(shù)據(jù)。l db_ddladmin:可以在數(shù)據(jù)庫(kù)中運(yùn)行任何數(shù)據(jù)定義語(yǔ)言(DDL)命令。l db_denydatareader:不能讀取數(shù)據(jù)庫(kù)內(nèi)用戶表中的任何數(shù)據(jù)。15.3 15.3 角色和用戶管理角色和用戶管理l db_denydatawriter:不能添加、修改或刪除數(shù)據(jù)庫(kù)內(nèi)用戶表中的任何數(shù)據(jù)。l db_owner:可以執(zhí)行數(shù)據(jù)庫(kù)的所有配置和維護(hù)活動(dòng)。l db_securityadmin:可以修改角色成員身份和管理權(quán)限

14、。l public:當(dāng)添加一個(gè)數(shù)據(jù)庫(kù)用戶時(shí),它自動(dòng)成為該角色成員,該角色不能刪除,指定給該角色的權(quán)限自動(dòng)給予所有數(shù)據(jù)庫(kù)用戶。ldb_owner和db_securityadmin角色的成員可以管理固有數(shù)據(jù)庫(kù)角色成員身份;但是,只有db_owner數(shù)據(jù)庫(kù)的成員可以向db_owner固有數(shù)據(jù)庫(kù)角色中添加成員。15.3 15.3 角色和用戶管理角色和用戶管理l3用戶自定義數(shù)據(jù)庫(kù)角色l當(dāng)打算為某些數(shù)據(jù)庫(kù)用戶設(shè)置相同的權(quán)限,但是這些權(quán)限不等同于預(yù)定義的數(shù)據(jù)庫(kù)角色所具有的權(quán)限時(shí),就可以定義新的數(shù)據(jù)庫(kù)角色來(lái)滿足這一要求,從而使這些用戶能夠在數(shù)據(jù)庫(kù)中實(shí)現(xiàn)某些特定功能。用戶自定義數(shù)據(jù)庫(kù)角色包含以下兩種類型。l 標(biāo)

15、準(zhǔn)角色:為完成某項(xiàng)任務(wù)而指定的具有某些權(quán)限和數(shù)據(jù)庫(kù)用戶的角色。l 應(yīng)用角色:與標(biāo)準(zhǔn)角色不同的是,應(yīng)用角色默認(rèn)情況下不包含任何成員,而且是非活動(dòng)的。將權(quán)限賦予應(yīng)用角色,然后將邏輯加入到某一特定的應(yīng)用程序中,從而激活應(yīng)用角色而實(shí)現(xiàn)了對(duì)應(yīng)用程序存取數(shù)據(jù)的可控性。15.3 15.3 角色和用戶管理角色和用戶管理l15.3.2 15.3.2 角色的管理角色的管理l1使用Management Studio管理角色l(1)為服務(wù)器角色添加登錄賬戶。執(zhí)行如下步驟。l 在圖15.8中展開服務(wù)器角色節(jié)點(diǎn)。在需要添加用戶的角色上單擊鼠標(biāo)右鍵,選擇“屬性”菜單,彈出“屬性”對(duì)話框。l 單擊“添加”按鈕,則彈出“選擇登

16、錄名”對(duì)話框,如圖15.10所示。l 單擊“瀏覽”按鈕,則彈出“查找對(duì)象”對(duì)話框,如圖15.11所示。l 選中需要添加的對(duì)象。l 單擊每個(gè)對(duì)話框中的“確定”按鈕關(guān)閉對(duì)話框。15.3 15.3 角色和用戶管理角色和用戶管理圖15.10 “選擇登錄名”對(duì)話框15.3 15.3 角色和用戶管理角色和用戶管理圖15.11 “查找對(duì)象”對(duì)話框15.3 15.3 角色和用戶管理角色和用戶管理l(2)為固有數(shù)據(jù)庫(kù)角色添加成員。鼠標(biāo)右鍵單擊想要添加成員的固有服務(wù)器角色節(jié)點(diǎn),其余步驟與(1)類似。l(3)創(chuàng)建用戶自定義角色。執(zhí)行如下步驟。l 展開要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)節(jié)點(diǎn),直到看到“數(shù)據(jù)庫(kù)角色”節(jié)點(diǎn),鼠標(biāo)右鍵單擊“數(shù)據(jù)庫(kù)

17、角色”,選擇“新建數(shù)據(jù)庫(kù)角色”,出現(xiàn)“新建數(shù)據(jù)庫(kù)角色”對(duì)話框,如圖15.12所示。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l 在角色名稱編輯框中填入角色名稱,在所有者編輯框中填入該角色的所有者。l 指定角色擁有的框架名稱。單擊“添加”按鈕添加角色成員,則彈出“選擇數(shù)據(jù)庫(kù)用戶或角色”對(duì)話框,如圖15.13所示。15.3 15.3 角色和用戶管理角色和用戶管理l 輸入用戶(如果需要,單擊“瀏覽”按鈕),單擊“確定”按鈕添加用戶到角色。l 單擊圖15.12左側(cè)選擇頁(yè)中的“安全對(duì)象”,則右側(cè)“安全對(duì)象”頁(yè)面,如圖15.14所示。在此可以設(shè)置角色訪

18、問(wèn)數(shù)據(jù)庫(kù)的資源。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l 單擊安全對(duì)象中“搜索”按鈕,彈出“添加對(duì)象”對(duì)話框,如圖15.15所示。l 選擇對(duì)象類型,如選擇“特定類型的所有對(duì)象”,則彈出“選擇對(duì)象類型”對(duì)話框,如圖15.16所示。15.3 15.3 角色和用戶管理角色和用戶管理l 在如圖15.16所示的對(duì)話框中選擇需要設(shè)置權(quán)限的對(duì)象類型,如選擇表,單擊“確定”按鈕關(guān)閉,則顯示所有表的權(quán)限設(shè)置,如圖15.17所示??梢栽O(shè)置具體的表的權(quán)限。針對(duì)具體表,還可以設(shè)計(jì)對(duì)應(yīng)的列權(quán)限。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3

19、角色和用戶管理角色和用戶管理l2使用Transact-SQL語(yǔ)句管理角色l對(duì)于服務(wù)器角色來(lái)說(shuō),其成員為登錄賬號(hào),對(duì)于數(shù)據(jù)庫(kù)角色來(lái)說(shuō),其成員為數(shù)據(jù)庫(kù)用戶、數(shù)據(jù)庫(kù)角色、Windows 登錄或Windows組。l(1)管理服務(wù)器角色。在SQL Server中管理服務(wù)器角色的存儲(chǔ)過(guò)程主要有兩個(gè):sp_addsrvro lemember和sp_dropsrvrrolemember。lsp_addsrvrolemember是添加登錄賬戶到服務(wù)器角色內(nèi),使其成為該角色的成員。l其語(yǔ)法格式為:lsp_addsrvrolemember loginame = login rolename = role15.3 1

20、5.3 角色和用戶管理角色和用戶管理lsp_dropsrvrrolemember用來(lái)在某一服務(wù)器角色中刪除登錄賬號(hào),當(dāng)該成員從服務(wù)器角色中被刪除后,便不再具有該服務(wù)器角色所設(shè)置的權(quán)限。l其語(yǔ)法格式為:lsp_dropsrvrolemember loginame = login rolename = rolel【例15.7】將登錄賬戶“iewangjf”加入sysadmin角色中。lsp_addsrvrolemember iewangjf sysadmin15.3 15.3 角色和用戶管理角色和用戶管理l(2)管理數(shù)據(jù)庫(kù)角色。管理數(shù)據(jù)庫(kù)角色的語(yǔ)句有:CREATE ROLE,DROP ROLE,A

21、LTER ROLE。lCREATE ROLE用來(lái)新建數(shù)據(jù)庫(kù)角色,其語(yǔ)法格式為:lCREATE ROLE role_name AUTHORIZATION owner_name l其中AUTHORIZATION owner_name表示將擁有新角色的數(shù)據(jù)庫(kù)用戶或角色。如果未指定用戶,則執(zhí)行CREATE ROLE的用戶將擁有該角色。l【例15.8】創(chuàng)建用戶“iewangjf”隸屬的數(shù)據(jù)庫(kù)角色“buyers”。lCREATE ROLE buyers AUTHORIZATION iewangjf15.3 15.3 角色和用戶管理角色和用戶管理l【例15.9】創(chuàng)建db_securityadmin 固有數(shù)據(jù)

22、庫(kù)角色隸屬的數(shù)據(jù)庫(kù)角色“auditors”。lCREATE ROLE auditors AUTHORIZATION db_securityadminl管理角色成員的存儲(chǔ)過(guò)程有:sp_addrolemember,sp_droprolemember,這兩個(gè)存儲(chǔ)過(guò)程和添加刪除服務(wù)器角色的存儲(chǔ)過(guò)程用法類似。l【例15.10】將數(shù)據(jù)庫(kù)用戶“iewangjf”添加到當(dāng)前數(shù)據(jù)庫(kù)的“Sales”數(shù)據(jù)庫(kù)角色中。lsp_addrolemember Sales, iewangjf15.3 15.3 角色和用戶管理角色和用戶管理l(3)查看角色信息。查看角色信息的存儲(chǔ)過(guò)程有sp_helprolemember、sp_h

23、elprole。lsp_helprolemember返回某個(gè)角色的成員的信息。其語(yǔ)法格式為:lsp_helprolemember rolename = role lsp_helprole返回當(dāng)前數(shù)據(jù)庫(kù)中有關(guān)角色的信息。其語(yǔ)法格式為: lsp_helprole rolename = role l【例15.11】顯示Sales角色的成員。lsp_helprolemember Salesl【例15.12】返回當(dāng)前數(shù)據(jù)庫(kù)中的所有角色。lsp_helprole15.3 15.3 角色和用戶管理角色和用戶管理l15.3.3 15.3.3 用戶管理簡(jiǎn)介用戶管理簡(jiǎn)介l用戶對(duì)數(shù)據(jù)的訪問(wèn)權(quán)限以及對(duì)數(shù)據(jù)庫(kù)對(duì)象的所有

24、關(guān)系都是通過(guò)用戶賬號(hào)來(lái)控制的,用戶賬號(hào)總是基于數(shù)據(jù)庫(kù)的,即兩個(gè)不同數(shù)據(jù)庫(kù)中可以有兩個(gè)相同的用戶賬號(hào)。l在數(shù)據(jù)庫(kù)中,用戶賬號(hào)與登錄賬號(hào)是兩個(gè)不同的概念,一個(gè)合法的登錄賬號(hào)只表明該賬號(hào)通過(guò)了Windows認(rèn)證或SQL Server認(rèn)證,但不能表明其可以對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)和數(shù)據(jù)對(duì)象進(jìn)行某種操作。l通常而言,數(shù)據(jù)庫(kù)用戶賬號(hào)總是與某一登錄賬號(hào)相關(guān)聯(lián)。但有一個(gè)例外,那就是guest用戶。用戶通過(guò)Windows認(rèn)證或SQL Server認(rèn)證而成功登錄到SQL Server之后的過(guò)程如下。15.3 15.3 角色和用戶管理角色和用戶管理l(1)檢查該登錄用戶是否有合法的用戶名,如果有合法用戶名,則允許其以用戶名訪問(wèn)

25、數(shù)據(jù)庫(kù),否則執(zhí)行步驟2。l(2)SQL Server檢查是否有g(shù)uest用戶,如果有,則允許登錄用戶以guest用戶來(lái)訪問(wèn)數(shù)據(jù)庫(kù),如果沒(méi)有,則該登錄用戶被拒絕。l由此可見,guest用戶主要是作為那些沒(méi)有屬于自己的用戶賬號(hào)的SQL Server登錄者的缺省用戶名,從而使該登錄者能夠訪問(wèn)具有g(shù)uest用戶的數(shù)據(jù)庫(kù)。15.3 15.3 角色和用戶管理角色和用戶管理l15.3.4 15.3.4 用戶的管理用戶的管理l1使用Management Studio管理用戶 l(1) 在Management Studio對(duì)象資源管理器中,擴(kuò)展指定的數(shù)據(jù)庫(kù)節(jié)點(diǎn),直到看到用戶節(jié)點(diǎn),如右圖所示。 l(2)鼠標(biāo)右鍵單

26、擊用戶子節(jié)點(diǎn),在彈出菜單中選擇“新建用戶”,彈出“新建數(shù)據(jù)庫(kù)用戶”對(duì)話框,如圖15.19所示。在用戶名編輯框中輸入用戶名。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l(3)在登錄名編輯框中輸入登錄名或單擊 “”按鈕,彈出“選擇登錄名”對(duì)話框,如圖15.10所示。輸入登錄名或單擊“瀏覽”按鈕。如單擊“瀏覽”按鈕,則出現(xiàn)“查找對(duì)象”對(duì)話框,如圖15.11所示。l(4)選中想添加的登錄名,單擊“確定”按鈕關(guān)閉對(duì)話框。l(5)選擇該用戶登錄的默認(rèn)架構(gòu)和所屬角色,最后關(guān)閉“新建數(shù)據(jù)庫(kù)用戶”對(duì)話框。15.3 15.3 角色和用戶管理角色和用戶管理l2.

27、 使用Transact-SQL管理用戶l使用Transact-SQL管理用戶的語(yǔ)句有CREATE USER,DROP USER,ALTER USER。l(1)創(chuàng)建用戶:CREATE USERlCREATE USER語(yǔ)法格式為:lCREATE USER user_name FOR | FROM l l LOGIN login_namel | CERTIFICATE cert_namel | ASYMMETRIC KEY asym_key_namel | WITHOUT LOGINl WITH DEFAULT_SCHEMA = schema_name 15.3 15.3 角色和用戶管理角色和用戶管

28、理l【例15.13】首先創(chuàng)建名為“Teacher”且具有密碼的服務(wù)器登錄名,然后在數(shù)據(jù)庫(kù)“TEACH”中創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)庫(kù)用戶“WangWei”。lCREATE LOGIN Teacher WITH PASSWORD = 27039;lUSE TEACHlCREATE USER WangWeil【例15.14】創(chuàng)建具有默認(rèn)架構(gòu)“Teaching”的對(duì)應(yīng)數(shù)據(jù)庫(kù)用戶“WangWei”lCREATE USER WangWei FOR LOGIN Teacher l WITH DEFAULT_SCHEMA = Teaching15.3 15.3 角色和用戶管理角色和用戶管理l(2)更改用戶名或更改其登錄

29、的默認(rèn)架構(gòu)ALTER USERl其語(yǔ)法格式為:lALTER USER user_name WITH ,.n l := NAME = new_user_namel | DEFAULT_SCHEMA = schema_name l【例15.15】更改數(shù)據(jù)庫(kù)用戶的名稱。lALTER USER WangWei WITH NAME = Wangjfl【例15.16】更改用戶的默認(rèn)架構(gòu)。lALTER USER WangWei WITH DEFAULT_SCHEMA = Admining15.3 15.3 角色和用戶管理角色和用戶管理l(3)刪除用戶:DROP USERl其語(yǔ)法格式為:lDROP USER

30、user_namel【例15.17】刪除用戶“WangWei”。lDROP USER WangWei15.4 SQL Server 200815.4 SQL Server 2008權(quán)限權(quán)限l權(quán)限管理指將安全對(duì)象的權(quán)限授予主體,取消或禁止主體對(duì)安全對(duì)象的權(quán)限。SQL Server通過(guò)驗(yàn)證主體是否已獲得適當(dāng)?shù)臋?quán)限來(lái)控制主體對(duì)安全對(duì)象執(zhí)行的操作。l1主體l“主體”是可以請(qǐng)求SQL Server資源的個(gè)體、組和過(guò)程。主體分類如表15.1所示。 表15.1主 體 分 類15.4 SQL Server 200815.4 SQL Server 2008權(quán)限權(quán)限l2安全對(duì)象l安全對(duì)象是SQL Server D

31、atabase Engine 授權(quán)系統(tǒng)控制對(duì)其進(jìn)行訪問(wèn)的資源。每個(gè) SQL Server安全對(duì)象都有可能授予主體的關(guān)聯(lián)權(quán)限,如表15.2所示。15.4 SQL Server 200815.4 SQL Server 2008權(quán)限權(quán)限l3架構(gòu)l架構(gòu)是形成單個(gè)命名空間的數(shù)據(jù)庫(kù)實(shí)體的集合。命名空間是一個(gè)集合,其中每個(gè)元素的名稱都是唯一的。在SQL Server 2008中,架構(gòu)獨(dú)立于創(chuàng)建它們的數(shù)據(jù)庫(kù)用戶而存在??梢栽诓桓募軜?gòu)名稱的情況下轉(zhuǎn)讓架構(gòu)的所有權(quán),這是與SQL Server 2000不同的地方。l完全限定的對(duì)象名稱包含4部分:server.database.schema.object。15.4

32、 SQL Server 200815.4 SQL Server 2008權(quán)限權(quán)限lSQL Server 2008還引入了“默認(rèn)架構(gòu)”的概念,用于解析未使用其完全限定名稱引用的對(duì)象的名稱。在SQL Server 2008中,每個(gè)用戶都有一個(gè)默認(rèn)架構(gòu),用于指定服務(wù)器在解析對(duì)象的名稱時(shí)將要搜索的第一個(gè)架構(gòu)??梢允褂肅REATE USER和ALTER USER的DEFAULT_ SCHEMA選項(xiàng)設(shè)置和更改默認(rèn)架構(gòu)。如果未定義默認(rèn)架構(gòu),則數(shù)據(jù)庫(kù)用戶將把 DBO作為其默認(rèn)架構(gòu)。15.4 SQL Server 200815.4 SQL Server 2008權(quán)限權(quán)限l【例15.18】下面代碼創(chuàng)建了用戶“Ja

33、ne”,默認(rèn)架構(gòu)為“Sales”,并設(shè)置其擁有數(shù)據(jù)庫(kù)“db_ddladmin”角色。lUSE AdventureWorkslCREATE USER Jane FOR LOGIN JanelWITH DEFAULT_SCHEMA = Sales;lEXEC sp_addrolemember db_ddladmin, Jane;l這樣Jane所做的任何操作默認(rèn)發(fā)生在“Sales”架構(gòu)上,她所創(chuàng)建的對(duì)象默認(rèn)屬于“Sales”架構(gòu),所引用的對(duì)象默認(rèn)在“Sales”架構(gòu)上。當(dāng)她執(zhí)行以下語(yǔ)句時(shí):lCREATE PROCEDURE usp_GetCustomerslASlSELECT * FROM Cust

34、omerl該存儲(chǔ)過(guò)程創(chuàng)建在“Sales”架構(gòu)上,其他用戶引用它時(shí)需要使用“Sales.usp_GetCustomers”。15.4 SQL Server 200815.4 SQL Server 2008權(quán)限權(quán)限l4權(quán)限l在SQL Server 2008中,能夠授予的安全對(duì)象和權(quán)限的組合有181種,具體的GRANT、DENY、REVOKE語(yǔ)句格式和具體的安全對(duì)象有關(guān)。使用時(shí)請(qǐng)參閱聯(lián)機(jī)叢書。l主要安全對(duì)象權(quán)限如表15.3所示。15.5 15.5 權(quán)限管理權(quán)限管理l1使用Management Studio管理權(quán)限l可通過(guò)對(duì)象或主體管理對(duì)象權(quán)限,下面講述通過(guò)對(duì)象來(lái)設(shè)置權(quán)限。l(1)鼠標(biāo)右鍵單擊對(duì)象,在

35、快捷菜單中選擇屬性,彈出屬性對(duì)話框。l(2)單擊左側(cè)選擇頁(yè)中“權(quán)限”,則顯示權(quán)限頁(yè),如圖15.20所示,在此可以指定該對(duì)象的角色或用戶的權(quán)限。15.5 15.5 權(quán)限管理權(quán)限管理15.5 15.5 權(quán)限管理權(quán)限管理l(3)單擊“搜索”按鈕,彈出“選擇用戶或角色”對(duì)話框,如圖15.21所示。l(4)輸入用戶或角色名,或單擊“瀏覽”按鈕,選擇需要添加授權(quán)的用戶或角色,如圖15.22所示。15.5 15.5 權(quán)限管理權(quán)限管理l(5)單擊“確定”按鈕關(guān)閉查找對(duì)象對(duì)話框,然后關(guān)閉選擇用戶或角色對(duì)話框,回到表屬性權(quán)限頁(yè)中,如圖15.23所示。15.5 15.5 權(quán)限管理權(quán)限管理l(6)選擇需要設(shè)置權(quán)限的用

36、戶或角色。設(shè)置該用戶對(duì)每個(gè)具體權(quán)限的“授予”、“具有授予權(quán)限”、“拒絕”3種權(quán)限。如圖15.23所示,設(shè)置用戶“guest”對(duì)該表的插入(Insert)權(quán)限,而拒絕了對(duì)表數(shù)據(jù)的刪除(Delete)權(quán)限。l(7)如果允許用戶具有查詢(Select)權(quán)限,則列權(quán)限可用,單擊“列權(quán)限”按鈕,“列權(quán)限”對(duì)話框出現(xiàn),如圖15.24所示。15.5 15.5 權(quán)限管理權(quán)限管理15.5 15.5 權(quán)限管理權(quán)限管理l如果不進(jìn)行設(shè)置,則用戶從其所屬角色中繼承權(quán)限。設(shè)置完列權(quán)限之后,單擊“確定”按鈕關(guān)閉列權(quán)限對(duì)話框。l(8)設(shè)置完權(quán)限之后,單擊“確定”按鈕關(guān)閉屬性頁(yè)。l另一種方法是通過(guò)設(shè)置用戶或角色的權(quán)限來(lái)設(shè)置權(quán)限

37、,請(qǐng)參考15.3.2節(jié)“創(chuàng)建用戶自定義角色”中的相關(guān)內(nèi)容。15.5 15.5 權(quán)限管理權(quán)限管理l2使用Tractans-SQL管理權(quán)限l在SQL Server中使用GRANT、REVOKE和DENY 3種命令來(lái)管理權(quán)限。l(1) GRANT用來(lái)把權(quán)限授予某一用戶,以允許該用戶執(zhí)行針對(duì)該對(duì)象的操作,如UPDATE、SELECT、DELETE、EXECUTE?;蛟试S其運(yùn)行某些語(yǔ)句,如CREATE TABLE、CREATE DATABASE。l其簡(jiǎn)化語(yǔ)法格式為:lGRANT ALL PRIVILEGES l | permission ( column ,.n ) ,.n l ON class : s

38、ecurable l TO principal ,.n l WITH GRANT OPTION AS principal 15.5 15.5 權(quán)限管理權(quán)限管理l【例15.19】授予用戶“WangWei”對(duì)數(shù)據(jù)庫(kù)的CREATE TABLE權(quán)限。lGRANT CREATE TABLE TO WangWeil【例15.20】授予用戶“WangWei”對(duì)數(shù)據(jù)庫(kù)的CREATE VIEW權(quán)限并使該用戶具有為其他主體授予CREATE VIEW的權(quán)限。lGRANT CREATE VIEW TO WangWei WITH GRANT OPTIONl【例15.21】授予用戶“WangWei”對(duì)表“Person.A

39、ddress”的SELECT權(quán)限。lGRANT SELECT ON OBJECT:Person.Address TO WangWei15.5 15.5 權(quán)限管理權(quán)限管理l(2)REVOKE用于取消用戶對(duì)某一對(duì)象或語(yǔ)句的權(quán)限,這些權(quán)限是經(jīng)過(guò)GRANT語(yǔ)句授予的。其語(yǔ)法格式和GRANT一致。l【例15.22】從用戶“WangWei”以及“WangWei”已授予VIEW DEFINITION權(quán)限的所有主體中撤消對(duì)數(shù)據(jù)庫(kù)的VIEW DEFINITION權(quán)限。lREVOKE VIEW DEFINITION FROM CarmineEs CASCADEl【例15.23】撤銷用戶“WangWei”對(duì)表“Pe

40、rson.Address”的SELECT權(quán)限。lREVOKE SELECT ON OBJECT:Person.Address FROM WangWei15.5 15.5 權(quán)限管理權(quán)限管理l(3)DENY用來(lái)禁止用戶對(duì)某一對(duì)象或語(yǔ)句的權(quán)限,明確禁止其對(duì)某一用戶對(duì)象,執(zhí)行某些操作。其語(yǔ)法格式和GRANT一致。l【例15.24】拒絕用戶“WangWei”對(duì)數(shù)據(jù)庫(kù)中表“Person.Address”的“SELECT”權(quán)限。lDENY SELECT ON OBJECT:Person.Address TO WangWei15.6 15.6 數(shù)據(jù)庫(kù)完整性概述數(shù)據(jù)庫(kù)完整性概述l強(qiáng)制數(shù)據(jù)完整性可保證數(shù)據(jù)庫(kù)中數(shù)據(jù)

41、的質(zhì)量。數(shù)據(jù)完整性是指數(shù)據(jù)的精確性和可靠性,例如,輸入“employee_id”(employee_id為主鍵)值為123的雇員,則該數(shù)據(jù)庫(kù)不應(yīng)允許其他雇員使用具有相同值的employee_id。如果想將“employee_rating”列的值范圍設(shè)定為15,則數(shù)據(jù)庫(kù)不應(yīng)接受值6。數(shù)據(jù)完整性分為下列類別。l1實(shí)體完整性l實(shí)體完整性將行定義為特定表的唯一實(shí)體。實(shí)體完整性通過(guò)索引、UNIQUE約束、PRIMARY KEY約束或IDENTITY屬性,強(qiáng)制表的標(biāo)識(shí)符列或主鍵的完整性。15.6 15.6 數(shù)據(jù)庫(kù)完整性概述數(shù)據(jù)庫(kù)完整性概述l2域完整性l域完整性是指數(shù)據(jù)庫(kù)表中的列必須滿足某種特定的數(shù)據(jù)類型或

42、約束??梢詮?qiáng)制域完整性限制類型(通過(guò)使用數(shù)據(jù)類型)、限制格式(通過(guò)使用CHECK約束和規(guī)則)或限制值的范圍(通過(guò)使用FOREIGN KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規(guī)則)。l3引用完整性l引用完整性以外鍵與主鍵之間或外鍵與唯一鍵之間的關(guān)系為基礎(chǔ)通過(guò)FOREIGN KEY和CHECK進(jìn)行約束。引用完整性確保鍵值在所有表中一致。這類一致性要求不能引用不存在的值,如果一個(gè)鍵值發(fā)生更改,則整個(gè)數(shù)據(jù)庫(kù)中,對(duì)該鍵值的所有引用要統(tǒng)一進(jìn)行更改。15.6 15.6 數(shù)據(jù)庫(kù)完整性概述數(shù)據(jù)庫(kù)完整性概述l4用戶定義完整性l用戶定義完整性使用戶可以定義不屬于其他任何完整性類別的特定

43、業(yè)務(wù)規(guī)則。SQL Server提供了一些工具來(lái)幫助用戶實(shí)現(xiàn)數(shù)據(jù)完整性,其中最主要的是約束、規(guī)則、觸發(fā)器,其中觸發(fā)器在前面章節(jié)中已經(jīng)介紹。15.7 15.7 約束的概念和類型約束的概念和類型l約束是通過(guò)限制列中數(shù)據(jù)、行中數(shù)據(jù)和表之間數(shù)據(jù)來(lái)保證數(shù)據(jù)完整性的非常有效的方法。約束可以確保把有效的數(shù)據(jù)輸入到列中,并維護(hù)表和表之間的特定關(guān)系。SQL Server 2008 提供了下列機(jī)制來(lái)強(qiáng)制列中數(shù)據(jù)的完整性:l PRIMARY KEY約束;l FOREIGN KEY約束;l UNIQUE約束;l CHECK約束;l DEFAULT定義;l 允許空值。15.7 15.7 約束的概念和類型約束的概念和類型l

44、定義約束時(shí),既可以把約束放在一個(gè)列上,也可以把約束放在多個(gè)列上。如果把約束放在一個(gè)列上,該約束稱為列級(jí)約束,因?yàn)樗荒苡杉s束所在的列引用;如果把約束放在多個(gè)列上,該約束稱為表級(jí)約束,這時(shí)可以由多個(gè)列來(lái)引用該約束。l在定義約束或修改約束的定義時(shí),應(yīng)該考慮下列情況:l 不必刪除表,就可以直接創(chuàng)建、修改和刪除約束;l 必須在應(yīng)用程序中增加錯(cuò)誤檢查機(jī)制,測(cè)試數(shù)據(jù)是否與約束相沖突;l 向表上增加約束時(shí),SQL Server系統(tǒng)將檢查表中的數(shù)據(jù)是否與約束沖突。15.7 15.7 約束的概念和類型約束的概念和類型l15.7.1 PRIMARY KEY15.7.1 PRIMARY KEY約束約束l表中包含唯一

45、標(biāo)識(shí)表中每一行的一列或一組列作為PRIMARY KEY約束。一個(gè)表只能有一個(gè)PRIMARY KEY約束,并且PRIMARY KEY約束中的列不能接收空值。l其定義語(yǔ)法格式為:lCONSTRAINT constraint_namel PRIMARY KEY | UNIQUE CLUSTERED | NONCLUSTEREDl (column_name1, column_name2,column_name16)15.7 15.7 約束的概念和類型約束的概念和類型l【例15.25】創(chuàng)建一個(gè)簡(jiǎn)單的學(xué)生表。lCREATE TABLE student( l StuID int PRIMARY KEY,l StuName varchar(20) )l或者將Primary key寫到后面。lCREATE TABLE student(l StuID int,l StuName varchar(20),l CONSTRAINT pk_stu_ID PRIMARY KEY(stuID) ) 15.7 15.7 約束的概念和類型約束的概念和類型l15.7.2 FOREIGN KEY15.7.2 FOREIGN KEY約束約束l外鍵(FOREIGN KEY)是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間連接的一列或多列。在外鍵引用中,當(dāng)一個(gè)表的列

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論