【正文】
生成test_create表。4. 分別通過SQL Server的工具和SQL語言授予數(shù)據(jù)庫(kù)用戶user1在Student表上的SELECT、DELETE權(quán)限 SQL語句:grant select on student to user1 grant delete on student to user1 企業(yè)管理器:進(jìn)入【實(shí)驗(yàn)四安全性】數(shù)據(jù)庫(kù),右擊安全性,右鍵用戶選擇屬性,添加安全對(duì)象。然后搜索dbo架構(gòu)的所有對(duì)象。最后把授予的選擇和刪除權(quán)勾上即可。 5. 以u(píng)ser1的身份登錄SQL Server,選擇Student表,分別進(jìn)行SELECT和INSERT操作,對(duì)比操作結(jié)果。 剛開始無法登錄:查閱了關(guān)于錯(cuò)誤信息的提示發(fā)現(xiàn)是服務(wù)器身份驗(yàn)證未開啟混合登錄模式。修改之后要重啟SQL服務(wù)才可以使修改生效,重啟電腦之后解決了這個(gè)問題。SELECT權(quán)限驗(yàn)證:select * from student執(zhí)行結(jié)果:查詢成功。還可以嘗試檢索未授權(quán)查詢Course表的內(nèi)容。select * from course執(zhí)行結(jié)果:系統(tǒng)拒絕執(zhí)行。INSERT權(quán)限驗(yàn)證: insert into student(sno,sname,sex,sage,sdept)values(39。s539。,39。Lambo39。,39。男39。,39。2339。,39。IS39。)執(zhí)行結(jié)果:系統(tǒng)拒絕執(zhí)行。DELETE權(quán)限驗(yàn)證:delete from student where sno=39。s239。執(zhí)行結(jié)果:成功刪除對(duì)應(yīng)元組刪除前后對(duì)比圖:還可以嘗試刪除未授權(quán)的Course表的元組delete from course where o=39。c239。執(zhí)行結(jié)果:系統(tǒng)拒絕刪除6. 收回授予user1的相關(guān)權(quán)限 收回用戶user1在Student表上的SELECT、DELETE權(quán)限r(nóng)evoke select,delete on student from user1權(quán)限檢測(cè):select * from student執(zhí)行結(jié)果:系統(tǒng)拒絕執(zhí)行。delete from student where sno=39。s339。執(zhí)行結(jié)果:系統(tǒng)拒絕執(zhí)行。角色機(jī)制:固定服務(wù)器角色固定服務(wù)器角色是服務(wù)器級(jí)別的主體,它們的作用范圍是整個(gè)服務(wù)器。固定服務(wù)器角色已經(jīng)具備了執(zhí)行指定操作的權(quán)限,可以把其他登錄名作為成員添加到固定服務(wù)器角色中,這樣該登錄名可以繼承固定服務(wù)器角色的權(quán)限。SQL Server 2008 的服務(wù)器角色: 數(shù)據(jù)庫(kù)角色 三種類型的數(shù)據(jù)庫(kù)角色: 固定數(shù)據(jù)庫(kù)角色:微軟提供的作為系統(tǒng)一部分的角色; 用戶定義的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)角色:由用戶自己定義的角色,將Windows用戶以一組自義 權(quán)限分組; 應(yīng)用程序角色:用來授予應(yīng)用程序?qū)iT的權(quán)限,而非授予用戶組或者單獨(dú)用戶。 1)固定數(shù)據(jù)庫(kù)角色 2) 用戶自定義數(shù)據(jù)庫(kù)角色在實(shí)驗(yàn)四安全性數(shù)據(jù)庫(kù)角色中新建一個(gè)數(shù)據(jù)庫(kù)角色test_role。上面是運(yùn)用企業(yè)管理器的可視化操作直接創(chuàng)建了數(shù)據(jù)庫(kù)角色,這里同樣可以用SQL語句 實(shí)現(xiàn)。SQL語句:create role test_role2執(zhí)行結(jié)果:成功生成對(duì)應(yīng)的數(shù)據(jù)庫(kù)角色。創(chuàng)建了角色后,我們可以給角色授權(quán)。操作權(quán)限包括:授予權(quán)限(GRANT):授予權(quán)限以執(zhí)行相關(guān)的操作。通過角色,所有該角色的成員繼承此權(quán)限。撤銷權(quán)限(REVOKE):撤銷授予的權(quán)限,但不會(huì)顯示阻止用戶或角色執(zhí)行操作。用戶或角色仍然能繼承其他角色的GRANT權(quán)限。拒絕權(quán)限(DENY):顯式拒絕執(zhí)行操作的權(quán)限,并阻止用戶或角色繼承權(quán)限,該語句優(yōu)先于其他授予的權(quán)限。關(guān)于角色權(quán)限的操作案例(均在“實(shí)驗(yàn)四安全性”數(shù)據(jù)庫(kù)操作): 授予角色“test_role”對(duì)”數(shù)據(jù)庫(kù)安全性”數(shù)據(jù)庫(kù)中“student”表的delete、insert、 update權(quán)限。SQL語句: grant delete,insert,update on studentto test_role執(zhí)行結(jié)果:命令成功完成。當(dāng)然,我們也可以用企業(yè)管理器的可視化操作執(zhí)行,首先找出角色test_role,然后右鍵 選擇進(jìn)入屬性,打開安全對(duì)象,找到Student表,最后授予相應(yīng)的權(quán)利。 把用戶user1添加到角色test_role中。SQL語句:sp_addrolemember 39。test_role39。,39。user139。企業(yè)管理器:進(jìn)入角色屬性,然后添加角色成員。 把角色test_role授予test_role2。使test_role2具有角色test_role的全部權(quán)限。 SQL語句:grant test_role to test_role2 這個(gè)是教材上的語法,與SQL Server 2008有所不同。 改用:sp_addrolemember 39。test_role39。,39。test_role239。 執(zhí)行結(jié)果:成功添加。 在角色test_role的基礎(chǔ)上增加對(duì)Student表的SELECT權(quán)限并收回DELETE權(quán)限。 SQL語句:grant select on student to test_role revoke delete on student from test_role