SQL使用GRANT語句向用戶授予操作權限,GRANT語句的一般格式為:
GRANT <權限> [,<權限>,…]
[ON <對象類型> <對象名>]
TO <用戶 | 角色>[,<用戶 | 角色>,…] | PUBLIC
[WITH GRANT OPTION]
對此語句的說明如下:
(1)不同類型的操作對象具有不同的操作權限,如表3.17所示。
(2)接受授權的用戶可以是一個或多個具體的用戶,也可以是角色或PUBLIC,指定PUBLIC即把權限授予數據庫中的所有用戶。
(3)授予關于屬性列的權限時,必須明確給出相應的屬性列名稱。
(4)如果指定了WITH GRANT OPTION子句,則獲得某種權限的用戶還可以把這種權限再授予其他用戶,但不允許循環授權,即被授權者不能把權限再授回給授權者或其祖先,如圖3.3所示。如果沒有指定WITH GRANT OPTION子句,則獲得某種權限的用戶只能使用該權限,不能把權限再授予其他人。
例3.72 把查詢Student表的權限授給用戶user1。
GRANT SELECT ON TABLE Student TO user1
例3.73 把對Student表和Course表的全部操作權限授予user2和user3。
GRANT ALL PRIVILIGES ON TABLE Student,Course TO user2, user3
例3.74 把對表SC的查詢權限授予給所有用戶。
GRANT SELECT ON TABLE SC TO PUBLIC
例3.75 把查詢Student表和修改學生姓名的權限授予給用戶user4。
GRANT SELECT,UPDATE(Sname) ON TABLE Student TO user4
例3.76 把對表SC的INSERT權限授予user5用戶,并允許其把此權限再授予其他用戶。
GRANT INSERT ON TABLE SC TO user5 WITH GRANT OPTION
執行此SQL語句后,user5不僅擁有了對表SC的INSERT權限,還可以把此權限再授予他人。
從上面的幾個例子可以看出,SQL的授權機制非常靈活。用戶對自己建立的基本表和視圖擁有全部的操作權限,也可以將這些權限授予其他用戶。用戶可以一次向一個用戶授權,如例3.72所示。也可以一次向多個用戶授權,如例3.73和例3.74所示;還可以一次傳播多個同類對象的權限,如例3.73所示;甚至一次可以完成對基本表、視圖和屬性列這些不同對象的授權,如例3.75所示。
新聞熱點
疑難解答