Oracle 權限分為系統權限(連線、建表、建視圖等)與物件權限(特定表的 SELECT/INSERT 等)。角色為權限集合,簡化授權管理。本文涵蓋建立角色、系統/物件權限授予與回收、欄位級授權、生效時機、預設角色五大面向。
CREATE ROLE clerk IDENTIFIED BY bicentennial; -- 需密碼啟用
CREATE ROLE clerk; -- 無密碼,直接啟用
GRANT CREATE SESSION TO jward;
GRANT CREATE TABLE TO michael WITH ADMIN OPTION; -- 可轉授、管理、刪除角色
GRANT CONNECT TO ssmith IDENTIFIED BY p1q2r3;
REVOKE CREATE TABLE FROM tsmith; -- ADMIN OPTION 不可單獨回收
GRANT SELECT, INSERT, DELETE ON emp TO jfee, tsmith;
GRANT ALL ON emp TO jfee;
GRANT SELECT ON emp TO jfee WITH GRANT OPTION; -- 可轉授、建視圖並授權
GRANT INSERT (acct_no) ON accounts TO scott;
REVOKE ALL ON dept FROM human_resource;
-- 擁有 GRANT OPTION 的使用者被回收物件權限時,其轉授對象權限連帶回收
SET ROLE。SET ROLE clerk IDENTIFIED BY bicentennial; -- 立即啟用
SET ROLE NONE; -- 關閉所有角色
ALTER USER jane DEFAULT ROLE payclerk, pettycash;
登入時自動啟用列表中的角色(需無密碼或密碼正確)。
DBA_SYS_PRIVS / USER_SYS_PRIVS:系統權限USER_TAB_PRIVS:物件權限DBA_ROLE_PRIVS:角色授予關係