數(shù)據(jù)庫的安全性和完整性管理課程(共81頁).ppt_第1頁
數(shù)據(jù)庫的安全性和完整性管理課程(共81頁).ppt_第2頁
數(shù)據(jù)庫的安全性和完整性管理課程(共81頁).ppt_第3頁
數(shù)據(jù)庫的安全性和完整性管理課程(共81頁).ppt_第4頁
數(shù)據(jù)庫的安全性和完整性管理課程(共81頁).ppt_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、是通過用戶賬號來實(shí)現(xiàn)的。角色簡化了平安性管理。15.1 15.1 數(shù)據(jù)庫平安性概述數(shù)據(jù)庫平安性概述l所以在SQL Server的平安模型中包括以下幾局部:l SQL Server身份驗(yàn)證;l 登錄賬戶;l 數(shù)據(jù)庫用戶;l 角色;l 權(quán)限。15.1 15.1 數(shù)據(jù)庫平安性概述數(shù)據(jù)庫平安性概述l15.1.1 15.1.1 身份驗(yàn)證簡介身份驗(yàn)證簡介lSQL ServerSQL Server支持兩種模式的身份驗(yàn)證:支持兩種模式的身份驗(yàn)證:WindowsWindows驗(yàn)證模式、驗(yàn)證模式、SQL Server SQL Server 和和Windows Windows 混合驗(yàn)證模式。混合驗(yàn)證模式。lWind

3、owsWindows驗(yàn)證模式比起驗(yàn)證模式比起SQL ServerSQL Server驗(yàn)證模式來有許多優(yōu)點(diǎn)。驗(yàn)證模式來有許多優(yōu)點(diǎn)。WindowsWindows身份驗(yàn)證比身份驗(yàn)證比SQL ServerSQL Server身份驗(yàn)證更加平安;使用身份驗(yàn)證更加平安;使用WindowsWindows身份驗(yàn)證的登錄賬戶更易于管理;用戶只需登錄身份驗(yàn)證的登錄賬戶更易于管理;用戶只需登錄WindowsWindows之后就可以使用之后就可以使用SQL ServerSQL Server,只需要登錄一次。,只需要登錄一次。l在混合驗(yàn)證模式下,在混合驗(yàn)證模式下,WindowsWindows驗(yàn)證和驗(yàn)證和SQL Serve

4、rSQL Server驗(yàn)證這兩種驗(yàn)證這兩種驗(yàn)證模式都是可用的。對于驗(yàn)證模式都是可用的。對于SQL ServerSQL Server驗(yàn)證模式,用戶在驗(yàn)證模式,用戶在連接連接SQL ServerSQL Server時必須提供登錄名和登錄密碼。時必須提供登錄名和登錄密碼。15.1 15.1 數(shù)據(jù)庫平安性概述數(shù)據(jù)庫平安性概述l15.1.2 15.1.2 驗(yàn)證模式的修改驗(yàn)證模式的修改l當(dāng)安裝當(dāng)安裝SQL ServerSQL Server時,可以選擇時,可以選擇SQL ServerSQL Server的身份驗(yàn)證類的身份驗(yàn)證類型。安裝完成之后也可以修改認(rèn)證模式。修改步驟如下。型。安裝完成之后也可以修改認(rèn)證模

5、式。修改步驟如下。l1 1翻開翻開SQL Server Management StudioSQL Server Management Studio。l2 2在要更改的效勞器上鼠標(biāo)右鍵單擊,在快捷菜單中選在要更改的效勞器上鼠標(biāo)右鍵單擊,在快捷菜單中選擇屬性,彈出效勞器屬性對話框。擇屬性,彈出效勞器屬性對話框。l3 3單擊左側(cè)列表中的單擊左側(cè)列表中的“平安性項(xiàng),出現(xiàn)平安性項(xiàng),出現(xiàn)“平安性頁平安性頁面,如圖面,如圖15.115.1所示。在圖中修改身份驗(yàn)證。所示。在圖中修改身份驗(yàn)證。15.1 15.1 數(shù)據(jù)庫平安性概述數(shù)據(jù)庫平安性概述圖15.1 身份驗(yàn)證15.2 15.2 管理效勞器登錄管理效勞器登錄

6、l1創(chuàng)立Windows登錄賬戶l1在“對象資源管理器中,單擊樹型目錄中的“平安性節(jié)點(diǎn),如圖15.2所示。15.2 15.2 管理效勞器登錄管理效勞器登錄l2鼠標(biāo)右鍵單擊“平安性的子節(jié)點(diǎn)“登錄名,在快捷菜單中選擇“新建登錄名,出現(xiàn)“登錄名-新建對話框,如圖15.3所示。15.2 15.2 管理效勞器登錄管理效勞器登錄l3在“登錄名編輯框中輸入登錄名稱,輸入的登錄名必須是已存在的Windows登錄用戶。可以單擊“搜索按鈕,出現(xiàn)登錄“選擇用戶和組對話框,如圖15.4所示。在對象名稱編輯框中輸入用戶或組的名稱,單擊“檢查名稱按鈕檢查對象是否存在。輸入完成,單擊“確定按鈕關(guān)閉選擇用戶或組對話框。 15.

7、2 15.2 管理效勞器登錄管理效勞器登錄l4確認(rèn)選擇的是“Windows身份驗(yàn)證。指定賬戶登錄的默認(rèn)數(shù)據(jù)庫。l5 單擊窗口左側(cè)列表中的“效勞器角色節(jié)點(diǎn),指定賬戶所屬效勞器角色。l6單擊窗口左側(cè)列表中的“用戶映射節(jié)點(diǎn),右側(cè)出現(xiàn)用戶映射頁面。可以查看或修改SQL登錄賬戶到數(shù)據(jù)庫用戶的映射。選擇此登錄賬戶可以訪問的數(shù)據(jù)庫,對具體的數(shù)據(jù)庫,指定要映射到登錄名的數(shù)據(jù)庫用戶默認(rèn)情況下,數(shù)據(jù)庫用戶名與登錄名相同。指定用戶的默認(rèn)架構(gòu),首次創(chuàng)立用戶時,其默認(rèn)架構(gòu)是dbo。l7設(shè)置完成單擊“確定按鈕提交更改。15.2 15.2 管理效勞器登錄管理效勞器登錄l2創(chuàng)立SQL Server登錄賬戶l一個SQL Ser

8、ver登錄賬戶名是一個新的登錄賬戶,該賬戶和Windows操作系統(tǒng)的登錄賬戶沒有關(guān)系。l1翻開新建登錄名對話框,選擇“SQL Server身份驗(yàn)證,輸入登錄名,密碼和確認(rèn)密碼,并選擇缺省數(shù)據(jù)庫,如圖15.5所示。15.2 15.2 管理效勞器登錄管理效勞器登錄l2設(shè)置效勞器角色和用戶映射,請參考“創(chuàng)立Windows登錄賬戶的步驟5和步驟6。15.2 15.2 管理效勞器登錄管理效勞器登錄l3登錄賬戶管理l創(chuàng)立登錄賬戶之后,在圖15.2所示效勞器平安性展開登錄名節(jié)點(diǎn)上,鼠標(biāo)右鍵單擊相應(yīng)的賬戶,出現(xiàn)快捷菜單,如圖15.6所示,如果要修改該登錄賬戶,選擇屬性菜單;如要刪除該登錄賬戶,那么選擇刪除菜單

9、。15.2 15.2 管理效勞器登錄管理效勞器登錄l15.2.2 15.2.2 使用使用Transact-SQLTransact-SQL管理登錄賬戶管理登錄賬戶l在在Transact-SQLTransact-SQL中,管理登錄賬戶的中,管理登錄賬戶的SQLSQL語句有:語句有:CREATE CREATE LOGINLOGIN、DROP LOGINDROP LOGIN、ALTER LOGINALTER LOGIN。下面簡要說明如何使。下面簡要說明如何使用用T-SQLT-SQL來創(chuàng)立和維護(hù)登錄賬戶。來創(chuàng)立和維護(hù)登錄賬戶。l1 1新建登錄賬戶新建登錄賬戶CREATE LOGINCREATE LOGI

10、Nl其語法格式為:其語法格式為:lCREATE LOGIN login_name WITH | CREATE LOGIN login_name WITH | FROM FROM 15.2 15.2 管理效勞器登錄管理效勞器登錄l【例15.1】創(chuàng)立帶密碼的登錄名“test。MUST_CHANGE選項(xiàng)要求用戶首次連接效勞器時更改此密碼。lCREATE LOGIN test WITH PASSWORD = 26aK MUST_CHANGEl【例15.2】從Windows域賬戶創(chuàng)立 Developmentiewangjf 登錄名。lCREATE LOGIN Developmentiewangjf FR

11、OM Windows15.2 15.2 管理效勞器登錄管理效勞器登錄l2刪除登錄賬戶DROP LOGINl其語法格式為:DROP LOGIN login_namel【例15.3】刪除登錄賬戶“test。lDROP LOGIN testl3更改登錄賬戶ALTER LOGINl其語法格式為:lALTER LOGIN login_name l l | WITH ,. l := ENABLE | DISABLE15.2 15.2 管理效勞器登錄管理效勞器登錄l【例15.4】啟用禁用的登錄。lALTER LOGIN test ENABLE;l【例15.5】將“test登錄密碼更改為 。lALTER LO

12、GIN test WITH PASSWORD = l【例15.6】將登錄名“test更改為“iewangjf。lALTER LOGIN test WITH NAME = iewangjf15.3 15.3 角色和用戶管理角色和用戶管理l15.3.1 15.3.1 角色管理簡介角色管理簡介l角色等價于Windows的工作組,將登錄名或用戶賦予一個角色,角色具有權(quán)限,登錄名或用戶作為角色成員,從而繼承了所屬角色的權(quán)限。如圖15.7所示。 登錄名或用戶 角色 權(quán)限 15.3 15.3 角色和用戶管理角色和用戶管理l只需給角色指定權(quán)限,然后將登錄名或用戶指定為某個角色,而不必給每個登錄名或用戶指定權(quán)限

13、,這樣給實(shí)際工作帶來了很大的便利。l在SQL Server中角色分為效勞器角色和數(shù)據(jù)庫角色。而數(shù)據(jù)庫角色又分為固有數(shù)據(jù)庫角色、用戶自定義數(shù)據(jù)庫角色和應(yīng)用程序角色。l1效勞器角色l效勞器角色內(nèi)建于SQL Server,其權(quán)限無法更改,每一個角色擁有一定級別的數(shù)據(jù)庫管理職能,如圖15.8所示。15.3 15.3 角色和用戶管理角色和用戶管理l效勞器角色包括以下幾種。l bulkadmin:可以運(yùn)行BULK INSERT語句。l dbcreator:可以創(chuàng)立、更改、刪除和復(fù)原任何數(shù)據(jù)庫。l diskadmin:管理磁盤文件。l processadmin:可以終止SQL Server實(shí)例中運(yùn)行的進(jìn)程。

14、l securityadmin:管理登錄名及其屬性。這類角色可以GRANT、DENY和REVOKE效勞器級和數(shù)據(jù)庫級權(quán)限,可以重置SQL Server登錄名的密碼。l serveradmin:可以更改效勞器范圍的配置選項(xiàng)和關(guān)閉效勞器。l setupadmin:添加和刪除鏈接效勞器,并且也可以執(zhí)行某些系統(tǒng)存儲過程。l sysadmin:可以在效勞器中執(zhí)行任何活動。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l2固有數(shù)據(jù)庫角色l固有數(shù)據(jù)庫角色是指這些角色的數(shù)據(jù)庫權(quán)限已被SQL Server預(yù)定義,不能對其權(quán)限進(jìn)行任何修改,并且這些角色存在于每個數(shù)

15、據(jù)庫中,如圖15.9所示。15.3 15.3 角色和用戶管理角色和用戶管理l固有數(shù)據(jù)庫角色包括以下幾種。l db_accessadmin:可以為Windows登錄賬戶、Windows 組和SQL Server登錄賬戶添加或刪除訪問權(quán)限。l db_backupoperator:可以備份該數(shù)據(jù)庫。l db_datareader:可以讀取所有用戶表中的所有數(shù)據(jù)。l db_datawriter:可以在所有用戶表中添加、刪除或更改數(shù)據(jù)。l db_ddladmin:可以在數(shù)據(jù)庫中運(yùn)行任何數(shù)據(jù)定義語言DDL命令。l db_denydatareader:不能讀取數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)。15.3 15.3

16、角色和用戶管理角色和用戶管理l db_denydatawriter:不能添加、修改或刪除數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)。l db_owner:可以執(zhí)行數(shù)據(jù)庫的所有配置和維護(hù)活動。l db_securityadmin:可以修改角色成員身份和管理權(quán)限。l public:當(dāng)添加一個數(shù)據(jù)庫用戶時,它自動成為該角色成員,該角色不能刪除,指定給該角色的權(quán)限自動給予所有數(shù)據(jù)庫用戶。ldb_owner和db_securityadmin角色的成員可以管理固有數(shù)據(jù)庫角色成員身份;但是,只有db_owner數(shù)據(jù)庫的成員可以向db_owner固有數(shù)據(jù)庫角色中添加成員。15.3 15.3 角色和用戶管理角色和用戶管理l3用

17、戶自定義數(shù)據(jù)庫角色l當(dāng)打算為某些數(shù)據(jù)庫用戶設(shè)置相同的權(quán)限,但是這些權(quán)限不等同于預(yù)定義的數(shù)據(jù)庫角色所具有的權(quán)限時,就可以定義新的數(shù)據(jù)庫角色來滿足這一要求,從而使這些用戶能夠在數(shù)據(jù)庫中實(shí)現(xiàn)某些特定功能。用戶自定義數(shù)據(jù)庫角色包含以下兩種類型。l 標(biāo)準(zhǔn)角色:為完成某項(xiàng)任務(wù)而指定的具有某些權(quán)限和數(shù)據(jù)庫用戶的角色。l 應(yīng)用角色:與標(biāo)準(zhǔn)角色不同的是,應(yīng)用角色默認(rèn)情況下不包含任何成員,而且是非活動的。將權(quán)限賦予應(yīng)用角色,然后將邏輯參加到某一特定的應(yīng)用程序中,從而激活應(yīng)用角色而實(shí)現(xiàn)了對應(yīng)用程序存取數(shù)據(jù)的可控性。15.3 15.3 角色和用戶管理角色和用戶管理l15.3.2 15.3.2 角色的管理角色的管理l1

18、 1使用使用Management StudioManagement Studio管理角色管理角色l1 1為效勞器角色添加登錄賬戶。執(zhí)行如下步驟。為效勞器角色添加登錄賬戶。執(zhí)行如下步驟。l 在圖在圖15.815.8中展開效勞器角色節(jié)點(diǎn)。在需要添加用戶的角中展開效勞器角色節(jié)點(diǎn)。在需要添加用戶的角色上單擊鼠標(biāo)右鍵,選擇色上單擊鼠標(biāo)右鍵,選擇“屬性菜單,彈出屬性菜單,彈出“屬性對屬性對話框。話框。l 單擊單擊“添加按鈕,那么彈出添加按鈕,那么彈出“選擇登錄名對話框,選擇登錄名對話框,如圖如圖15.1015.10所示。所示。l 單擊單擊“瀏覽按鈕,那么彈出瀏覽按鈕,那么彈出“查找對象對話框,如查找對象對

19、話框,如圖圖15.1115.11所示。所示。l 選中需要添加的對象。選中需要添加的對象。l 單擊每個對話框中的單擊每個對話框中的“確定按鈕關(guān)閉對話框。確定按鈕關(guān)閉對話框。15.3 15.3 角色和用戶管理角色和用戶管理圖15.10 “選擇登錄名對話框15.3 15.3 角色和用戶管理角色和用戶管理圖15.11 “查找對象對話框15.3 15.3 角色和用戶管理角色和用戶管理l2為固有數(shù)據(jù)庫角色添加成員。鼠標(biāo)右鍵單擊想要添加成員的固有效勞器角色節(jié)點(diǎn),其余步驟與1類似。l3創(chuàng)立用戶自定義角色。執(zhí)行如下步驟。l 展開要創(chuàng)立數(shù)據(jù)庫節(jié)點(diǎn),直到看到“數(shù)據(jù)庫角色節(jié)點(diǎn),鼠標(biāo)右鍵單擊“數(shù)據(jù)庫角色,選擇“新建數(shù)據(jù)

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

21、色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l 單擊平安對象中“搜索按鈕,彈出“添加對象對話框,如圖15.15所示。l 選擇對象類型,如選擇“特定類型的所有對象,那么彈出“選擇對象類型對話框,如圖15.16所示。15.3 15.3 角色和用戶管理角色和用戶管理l 在如圖15.16所示的對話框中選擇需要設(shè)置權(quán)限的對象類型,如選擇表,單擊“確定按鈕關(guān)閉,那么顯示所有表的權(quán)限設(shè)置,如圖15.17所示??梢栽O(shè)置具體的表的權(quán)限。針對具體表,還可以設(shè)計(jì)對應(yīng)的列權(quán)限。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l2使用Tran

22、sact-SQL語句管理角色l對于效勞器角色來說,其成員為登錄賬號,對于數(shù)據(jù)庫角色來說,其成員為數(shù)據(jù)庫用戶、數(shù)據(jù)庫角色、Windows 登錄或Windows組。l1管理效勞器角色。在SQL Server中管理效勞器角色的存儲過程主要有兩個:sp_addsrvro lemember和sp_dropsrvrrolemember。lsp_addsrvrolemember是添加登錄賬戶到效勞器角色內(nèi),使其成為該角色的成員。l其語法格式為:lsp_addsrvrolemember loginame = login rolename = role15.3 15.3 角色和用戶管理角色和用戶管理lsp_dr

23、opsrvrrolemember用來在某一效勞器角色中刪除登錄賬號,當(dāng)該成員從效勞器角色中被刪除后,便不再具有該效勞器角色所設(shè)置的權(quán)限。l其語法格式為:lsp_dropsrvrolemember loginame = login rolename = rolel【例15.7】將登錄賬戶“iewangjf參加sysadmin角色中。lsp_addsrvrolemember iewangjf sysadmin15.3 15.3 角色和用戶管理角色和用戶管理l2管理數(shù)據(jù)庫角色。管理數(shù)據(jù)庫角色的語句有:CREATE ROLE,DROP ROLE,ALTER ROLE。lCREATE ROLE用來新建數(shù)

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

25、 ROLE auditors AUTHORIZATION db_securityadminl管理角色成員的存儲過程有:sp_addrolemember,sp_droprolemember,這兩個存儲過程和添加刪除效勞器角色的存儲過程用法類似。l【例15.10】將數(shù)據(jù)庫用戶“iewangjf添加到當(dāng)前數(shù)據(jù)庫的“Sales數(shù)據(jù)庫角色中。lsp_addrolemember Sales, iewangjf15.3 15.3 角色和用戶管理角色和用戶管理l3查看角色信息。查看角色信息的存儲過程有sp_helprolemember、sp_helprole。lsp_helprolemember返回某個角色的

26、成員的信息。其語法格式為:lsp_helprolemember rolename = role lsp_helprole返回當(dāng)前數(shù)據(jù)庫中有關(guān)角色的信息。其語法格式為: lsp_helprole rolename = role l【例15.11】顯示Sales角色的成員。lsp_helprolemember Salesl【例15.12】返回當(dāng)前數(shù)據(jù)庫中的所有角色。lsp_helprole15.3 15.3 角色和用戶管理角色和用戶管理l15.3.3 15.3.3 用戶管理簡介用戶管理簡介l用戶對數(shù)據(jù)的訪問權(quán)限以及對數(shù)據(jù)庫對象的所有關(guān)系都是用戶對數(shù)據(jù)的訪問權(quán)限以及對數(shù)據(jù)庫對象的所有關(guān)系都是通過用戶

27、賬號來控制的,用戶賬號總是基于數(shù)據(jù)庫的,即通過用戶賬號來控制的,用戶賬號總是基于數(shù)據(jù)庫的,即兩個不同數(shù)據(jù)庫中可以有兩個相同的用戶賬號。兩個不同數(shù)據(jù)庫中可以有兩個相同的用戶賬號。l在數(shù)據(jù)庫中,用戶賬號與登錄賬號是兩個不同的概念,一在數(shù)據(jù)庫中,用戶賬號與登錄賬號是兩個不同的概念,一個合法的登錄賬號只說明該賬號通過了個合法的登錄賬號只說明該賬號通過了WindowsWindows認(rèn)證或認(rèn)證或SQL SQL ServerServer認(rèn)證,但不能說明其可以對數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)對象認(rèn)證,但不能說明其可以對數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)對象進(jìn)行某種操作。進(jìn)行某種操作。l通常而言,數(shù)據(jù)庫用戶賬號總是與某一登錄賬號相關(guān)聯(lián)。通常而

28、言,數(shù)據(jù)庫用戶賬號總是與某一登錄賬號相關(guān)聯(lián)。但有一個例外,那就是但有一個例外,那就是guestguest用戶。用戶通過用戶。用戶通過WindowsWindows認(rèn)證認(rèn)證或或SQL ServerSQL Server認(rèn)證而成功登錄到認(rèn)證而成功登錄到SQL ServerSQL Server之后的過程如之后的過程如下。下。15.3 15.3 角色和用戶管理角色和用戶管理l1檢查該登錄用戶是否有合法的用戶名,如果有合法用戶名,那么允許其以用戶名訪問數(shù)據(jù)庫,否那么執(zhí)行步驟2。l2SQL Server檢查是否有g(shù)uest用戶,如果有,那么允許登錄用戶以guest用戶來訪問數(shù)據(jù)庫,如果沒有,那么該登錄用戶被拒

29、絕。l由此可見,guest用戶主要是作為那些沒有屬于自己的用戶賬號的SQL Server登錄者的缺省用戶名,從而使該登錄者能夠訪問具有g(shù)uest用戶的數(shù)據(jù)庫。15.3 15.3 角色和用戶管理角色和用戶管理l15.3.4 15.3.4 用戶的管理用戶的管理l1 1使用使用Management StudioManagement Studio管理用管理用戶戶 l1 1 在在Management StudioManagement Studio對象資對象資源管理器中,擴(kuò)展指定的數(shù)據(jù)庫節(jié)源管理器中,擴(kuò)展指定的數(shù)據(jù)庫節(jié)點(diǎn),直到看到用戶節(jié)點(diǎn),如右圖所點(diǎn),直到看到用戶節(jié)點(diǎn),如右圖所示。示。 l2 2鼠標(biāo)右鍵單

30、擊用戶子節(jié)點(diǎn),鼠標(biāo)右鍵單擊用戶子節(jié)點(diǎn),在彈出菜單中選擇在彈出菜單中選擇“新建用戶新建用戶,彈出彈出“新建數(shù)據(jù)庫用戶對話框,新建數(shù)據(jù)庫用戶對話框,如圖如圖15.1915.19所示。在用戶名編輯框所示。在用戶名編輯框中輸入用戶名。中輸入用戶名。15.3 15.3 角色和用戶管理角色和用戶管理15.3 15.3 角色和用戶管理角色和用戶管理l3在登錄名編輯框中輸入登錄名或單擊 “按鈕,彈出“選擇登錄名對話框,如圖15.10所示。輸入登錄名或單擊“瀏覽按鈕。如單擊“瀏覽按鈕,那么出現(xiàn)“查找對象對話框,如圖15.11所示。l4選中想添加的登錄名,單擊“確定按鈕關(guān)閉對話框。l5選擇該用戶登錄的默認(rèn)架構(gòu)和所

31、屬角色,最后關(guān)閉“新建數(shù)據(jù)庫用戶對話框。15.3 15.3 角色和用戶管理角色和用戶管理l2. 使用Transact-SQL管理用戶l使用Transact-SQL管理用戶的語句有CREATE USER,DROP USER,ALTER USER。l1創(chuàng)立用戶:CREATE USERlCREATE USER語法格式為:lCREATE USER user_name FOR | FROM l l LOGIN login_namel | CERTIFICATE cert_namel | ASYMMETRIC KEY asym_key_namel | WITHOUT LOGINl WITH DEFAULT

32、_SCHEMA = schema_name 15.3 15.3 角色和用戶管理角色和用戶管理l【例15.13】首先創(chuàng)立名為“Teacher且具有密碼的效勞器登錄名,然后在數(shù)據(jù)庫“TEACH中創(chuàng)立對應(yīng)的數(shù)據(jù)庫用戶“WangWei。lCREATE LOGIN Teacher WITH PASSWORD = 27039;lUSE TEACHlCREATE USER WangWeil【例15.14】創(chuàng)立具有默認(rèn)架構(gòu)“Teaching的對應(yīng)數(shù)據(jù)庫用戶“WangWeilCREATE USER WangWei FOR LOGIN Teacher l WITH DEFAULT_SCHEMA = Teachin

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

34、理l3刪除用戶:DROP USERl其語法格式為:lDROP USER user_namel【例15.17】刪除用戶“WangWei。lDROP USER WangWei15.4 SQL Server 202115.4 SQL Server 2021權(quán)限權(quán)限l權(quán)限管理指將平安對象的權(quán)限授予主體,取消或禁止主體對平安對象的權(quán)限。SQL Server通過驗(yàn)證主體是否已獲得適當(dāng)?shù)臋?quán)限來控制主體對平安對象執(zhí)行的操作。l1主體l“主體是可以請求SQL Server資源的個體、組和過程。主體分類如表15.1所示。l 表15.1主 體 分 類15.4 SQL Server 202115.4 SQL Serv

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

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

37、了用戶“Jane,默認(rèn)架構(gòu)為“Sales,并設(shè)置其擁有數(shù)據(jù)庫“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)立的對象默認(rèn)屬于“Sales架構(gòu),所引用的對象默認(rèn)在“Sales架構(gòu)上。當(dāng)她執(zhí)行以下語句時:lCREATE PROCEDURE usp_GetCustomerslASlSELECT * FROM Cust

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

39、中選擇屬性,彈出屬性對話框。l2單擊左側(cè)選擇頁中“權(quán)限,那么顯示權(quán)限頁,如圖15.20所示,在此可以指定該對象的角色或用戶的權(quán)限。15.5 15.5 權(quán)限管理權(quán)限管理15.5 15.5 權(quán)限管理權(quán)限管理l3單擊“搜索按鈕,彈出“選擇用戶或角色對話框,如圖15.21所示。l4輸入用戶或角色名,或單擊“瀏覽按鈕,選擇需要添加授權(quán)的用戶或角色,如圖15.22所示。15.5 15.5 權(quán)限管理權(quán)限管理l5單擊“確定按鈕關(guān)閉查找對象對話框,然后關(guān)閉選擇用戶或角色對話框,回到表屬性權(quán)限頁中,如圖15.23所示。15.5 15.5 權(quán)限管理權(quán)限管理l6選擇需要設(shè)置權(quán)限的用戶或角色。設(shè)置該用戶對每個具體權(quán)限的

40、“授予、“具有授予權(quán)限、“拒絕3種權(quán)限。如圖15.23所示,設(shè)置用戶“guest對該表的插入Insert權(quán)限,而拒絕了對表數(shù)據(jù)的刪除Delete權(quán)限。l7如果允許用戶具有查詢Select權(quán)限,那么列權(quán)限可用,單擊“列權(quán)限按鈕,“列權(quán)限對話框出現(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)限對話框。l8設(shè)置完權(quán)限之后,單擊“確定按鈕關(guān)閉屬性頁。l另一種方法是通過設(shè)置用戶或角色的權(quán)限來設(shè)置權(quán)限,請參考節(jié)“創(chuàng)立用戶自定義角色中的相關(guān)內(nèi)容。15.5 15.5 權(quán)限

41、管理權(quán)限管理l2使用Tractans-SQL管理權(quán)限l在SQL Server中使用GRANT、REVOKE和DENY 3種命令來管理權(quán)限。l1 GRANT用來把權(quán)限授予某一用戶,以允許該用戶執(zhí)行針對該對象的操作,如UPDATE、SELECT、DELETE、EXECUTE?;蛟试S其運(yùn)行某些語句,如CREATE TABLE、CREATE DATABASE。l其簡化語法格式為:lGRANT ALL PRIVILEGES l | permission ( column ,.n ) ,.n l ON class : securable l TO principal ,.n l WITH GRANT OP

42、TION AS principal 15.5 15.5 權(quán)限管理權(quán)限管理l【例15.19】授予用戶“WangWei對數(shù)據(jù)庫的CREATE TABLE權(quán)限。lGRANT CREATE TABLE TO WangWeil【例15.20】授予用戶“WangWei對數(shù)據(jù)庫的CREATE VIEW權(quán)限并使該用戶具有為其他主體授予CREATE VIEW的權(quán)限。lGRANT CREATE VIEW TO WangWei WITH GRANT OPTIONl【例15.21】授予用戶“WangWei對表“Person.Address的SELECT權(quán)限。lGRANT SELECT ON OBJECT:Person

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

44、n.Address FROM WangWei15.5 15.5 權(quán)限管理權(quán)限管理l3DENY用來禁止用戶對某一對象或語句的權(quán)限,明確禁止其對某一用戶對象,執(zhí)行某些操作。其語法格式和GRANT一致。l【例15.24】拒絕用戶“WangWei對數(shù)據(jù)庫中表“Person.Address的“SELECT權(quán)限。lDENY SELECT ON OBJECT:Person.Address TO WangWei15.6 15.6 數(shù)據(jù)庫完整性概述數(shù)據(jù)庫完整性概述l強(qiáng)制數(shù)據(jù)完整性可保證數(shù)據(jù)庫中數(shù)據(jù)的質(zhì)量。數(shù)據(jù)完整性是指數(shù)據(jù)的精確性和可靠性,例如,輸入“employee_idemployee_id為主鍵值為123

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

46、N KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規(guī)那么。l3引用完整性l引用完整性以外鍵與主鍵之間或外鍵與唯一鍵之間的關(guān)系為根底通過FOREIGN KEY和CHECK進(jìn)行約束。引用完整性確保鍵值在所有表中一致。這類一致性要求不能引用不存在的值,如果一個鍵值發(fā)生更改,那么整個數(shù)據(jù)庫中,對該鍵值的所有引用要統(tǒng)一進(jìn)行更改。15.6 15.6 數(shù)據(jù)庫完整性概述數(shù)據(jù)庫完整性概述l4用戶定義完整性l用戶定義完整性使用戶可以定義不屬于其他任何完整性類別的特定業(yè)務(wù)規(guī)那么。SQL Server提供了一些工具來幫助用戶實(shí)現(xiàn)數(shù)據(jù)完整性,其中最主要的是約束、規(guī)那么、觸發(fā)器,其中觸發(fā)器在前面章

47、節(jié)中已經(jīng)介紹。15.7 15.7 約束的概念和類型約束的概念和類型l約束是通過限制列中數(shù)據(jù)、行中數(shù)據(jù)和表之間數(shù)據(jù)來保證數(shù)據(jù)完整性的非常有效的方法。約束可以確保把有效的數(shù)據(jù)輸入到列中,并維護(hù)表和表之間的特定關(guān)系。SQL Server 2021 提供了以下機(jī)制來強(qiáng)制列中數(shù)據(jù)的完整性:l PRIMARY KEY約束;l FOREIGN KEY約束;l UNIQUE約束;l CHECK約束;l DEFAULT定義;l 允許空值。15.7 15.7 約束的概念和類型約束的概念和類型l定義約束時,既可以把約束放在一個列上,也可以把約束放在多個列上。如果把約束放在一個列上,該約束稱為列級約束,因?yàn)樗荒苡杉s

48、束所在的列引用;如果把約束放在多個列上,該約束稱為表級約束,這時可以由多個列來引用該約束。l在定義約束或修改約束的定義時,應(yīng)該考慮以下情況:l 不必刪除表,就可以直接創(chuàng)立、修改和刪除約束;l 必須在應(yīng)用程序中增加錯誤檢查機(jī)制,測試數(shù)據(jù)是否與約束相沖突;l 向表上增加約束時,SQL Server系統(tǒng)將檢查表中的數(shù)據(jù)是否與約束沖突。15.7 15.7 約束的概念和類型約束的概念和類型l15.7.1 PRIMARY KEY15.7.1 PRIMARY KEY約束約束l表中包含唯一標(biāo)識表中每一行的一列或一組列作為PRIMARY KEY約束。一個表只能有一個PRIMARY KEY約束,并且PRIMARY

49、 KEY約束中的列不能接收空值。l其定義語法格式為:lCONSTRAINT constraint_namel PRIMARY KEY | UNIQUE CLUSTERED | NONCLUSTEREDl (column_name1, column_name2,column_name16)15.7 15.7 約束的概念和類型約束的概念和類型l【例15.25】創(chuàng)立一個簡單的學(xué)生表。lCREATE TABLE student( l StuID int PRIMARY KEY,l StuName varchar(20) )l或者將Primary key寫到后面。lCREATE TABLE studen

50、t(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 KEYFOREIGN KEY是用于建立和加強(qiáng)兩個表數(shù)據(jù)之間連是用于建立和加強(qiáng)兩個表數(shù)據(jù)之間連接的一列或多列。在外鍵引用中,當(dāng)一個表的列被引用作接的一列或多列。在外鍵引用中,當(dāng)一個表的列被引用作為另一個表的主鍵列時,就在兩表之間創(chuàng)立了連接,這個為另一個表的主鍵列時,就在兩表之間創(chuàng)立

51、了連接,這個列就成為第二個表的外鍵。列就成為第二個表的外鍵。lFOREIGN KEYFOREIGN KEY約束要求列中的每個值,都存在于引用的表的約束要求列中的每個值,都存在于引用的表的對應(yīng)被引用列中。對應(yīng)被引用列中。FOREIGN KEYFOREIGN KEY約束只能引用在引用的表中約束只能引用在引用的表中是是 PRIMARY KEY PRIMARY KEY 或或 UNIQUE UNIQUE 約束的列。約束的列。l其定義的語法格式為:其定義的語法格式為:l CONSTRAINT constraint_name CONSTRAINT constraint_name l FOREIGN KEY FOREIGN KEY l REFERENCES schema_name . REFERENCES schema_name . referenced_table_name ( ref_column ,. n )referenced_table_name ( ref_column ,. n )15.7 15.7 約束的概念和類型約束的概念和類型l【例15.26】創(chuàng)立選課表。lC

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論