【數據庫】作業12——第四章:數據庫安全性 習題



 

作業原地址:作業

 

目錄

6.

(1)

(2)

(3)

(4)

(5)

7.

(1)

(2)

(3)

(4)

(5)

(6)

(7)

8.

(1)

(2)

(3)

(4)

(5)

(6)

(7)

 

總結

 



 

6.

對下列兩個關係模式:
學生(學號,姓名,年齡,性別,家庭住址,班級號)
班級(班級號,班級名,班主任,班長)
使用GRANT語句完成下列授權功能:

 

Student(Sno,Sname,Sage,Sex,Saddress,Cno);

Class(Cno,Cname,Cteacher,Cmonitor);

 

(1)

授予用戶U1對兩個表的所有權限,並可給其他用戶授權。

 

GRANT ALL PRIVILEGES 
ON TABLE Student,Class 
TO U1
WITH GRANT OPTION

 

(2)

授予用戶U2對學生表具有查看權限,對家庭住址具有更新權限。

 

GRANT SELECT,UPDATE(Saddress)
ON TABLE Student 
TO U2

 

(3)

將對班級表查看權限授予所有用戶。

 

GRANT SELECT 
ON TABLE Student 
TO PUBLIC

 

(4)

將對學生表的查詢、更新權限授予角色R1。

 

GRANT SELECT,UPDATE
ON TABLE Student 
TO R1

 

(5)

將角色R1授予用戶UI,並且U1可繼續授權給其他角色。

 

GRANT R1
TO U1
WITH ADMIN OPTION

 


 

7.

今有以下兩個關係模式:
職工(職工號,姓名,年齡,職務,工資,部門號)
部門(部門號,名稱,經理名,地址,電話號)
請用 SQL 的 GRANT 和REVOKE 語句(加上視圖機制)完成以下授權定義或存取控制功能:

 

Staff(Sno,Sname,Sage,Spost,Wage,Dno);

Dept(Dno,Dname,Mname,Daddress,Dtel);

 

(1)

用戶王明對兩個表有SELECT權限。

 

GRANT SELECT 
ON TABLE Staff,Dept
TO 王明

 

(2)

用戶李勇對兩個表有INSERT和DELETE權限。

 

GRANT INSERT,DELETE
ON TABLE Staff,Dept
TO 李勇

 

(3)

每個職工只對自己的記錄有SELECT權限。

 

GRANT SELECT
ON TABLE Staff
WHEN USER()=Sname
TO ALL;

 

(4)

用戶劉星對職工表有SELECT權限,對工資字段具有更新權限。

 

GRANT SELECT,UPDATE(Wage)
ON TABLE Staff 
TO 劉星

 

(5)

用戶張新具有修改這兩個表的結構的權限。

 

GRANT ALTER
ON TABLE Staff,Dept
TO 張新

 

(6)

用戶周平具有對兩個表的所有權限(讀、插、改、刪數據),並具有給其他用戶授權的權限。

 

GRANT ALL PRIVILEGES 
ON TABLE Staff,Dept 
TO 周平
WITH GRANT OPTION

 

(7)

用戶楊蘭具有從每個部門職工中 SELECT 最高工資、最低工資、平均工資的權限,他不能查看每個人的工資。

 

CREATE VIEW Swage(Sname,Smax,Smin,Savg)
AS SELECT Staff.Dno,MAX(Wage),MIN(Wage),AVG(Wage) FROM Staff,Dept
WHERE Staff.Dno=Dept.Dno
GROUP BY Staff.Dno
/*最高工資、最低工資、平均工資*/

GRANT SELECT 
ON VIEW Swage
TO 楊蘭

 


 

8.

針對習題7中(1)~(7)的每一種情況,撤銷各用戶所授予的權限

 

(1)

撤銷用戶王明對兩個表的SELECT權限。

 

REVOKE SELECT 
ON TABLE Staff,Dept
FROM 王明

 

(2)

撤銷用戶李勇對兩個表的INSERT和DELETE權限。

 

REVOKE INSERT,DELETE 
ON TABLE Staff,Dept
FROM 李勇

 

(3)

撤銷每個職工對自己記錄的SELECT權限。

 

REVOKE SELECT 
ON TABLE Staff
WHEN USER()=Sname
FROM ALL

 

(4)

撤銷用戶劉星對職工表的SELECT權限,對工資字段的更新權限。

 

REVOKE SELECT,UPDATE 
ON TABLE Staff
FROM 劉星

 

(5)

撤銷用戶張新修改這兩個表的結構的權限。

 

REVOKE ALTER
ON TABLE Staff,Dept
FROM 張新

 

(6)

撤銷用戶周平對兩個表的所有權限(讀、插、改、刪數據),及給其他用戶授權的權限。

 

REVOKE ALL PRIVILEGES 
ON TABLE Staff,Dept 
FROM 周平

 

(7)

撤銷用戶楊蘭的從每個部門職工中 SELECT 最高工資、最低工資、平均工資的權限

 

REVOKE SELECT
ON VIEW Swange 
FROM 楊蘭
DROP VIEW Swage

 


 

總結

 

習題還好,套語句基本都可以,沒有什麼太大問題。

但是TABLE 那個問題還是沒有解決,習題的話,我還是照着書上的把TABLE加上了。

 


完成時間:42min

          以上

                                         ————(2020.4.5)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章