Oracle 權限模型分為系統權限、對象權限,角色是權限集合。本文演示從創建用戶、授予會話/資源權限、分配標準角色、查詢三級權限視圖的標準化流程。
-- 1. 創建用戶(需 DBA)
CREATE USER db_user IDENTIFIED BY db_user_pw;
-- 2. 授予創建會話權限(登錄前提)
GRANT CREATE SESSION TO db_user;
-- 3. 授予資源角色(含 CREATE TABLE/PROCEDURE/SEQUENCE 等)
GRANT RESOURCE TO db_user;
-- 合併寫法
CREATE USER db_user IDENTIFIED BY db_user_pw DEFAULT TABLESPACE users;
GRANT CREATE SESSION, RESOURCE TO db_user;
| 視圖前綴 | 範圍 | 典型查詢 |
|---|---|---|
USER_* | 當前用戶擁有/被授予 | SELECT * FROM user_tab_privs;(對象權限)SELECT * FROM user_sys_privs;(系統權限) |
ALL_* | 當前用戶可訪問(含授予他人的) | SELECT * FROM all_tab_privs; |
DBA_* | 全庫所有(需 DBA 權限) | SELECT * FROM dba_role_privs;(角色授予) |
GRANT CREATE VIEW, CREATE PROCEDURE TO db_user;GRANT SELECT, INSERT ON scott.emp TO db_user;GRANT CONNECT, RESOURCE, DBA TO db_user;REVOKE CREATE TABLE FROM db_user;SELECT * FROM dba_roles;SELECT * FROM user_role_privs;| 角色 | 核心權限 | 適用對象 |
|---|---|---|
| CONNECT | CREATE SESSION 等 7 項基本權限 | 所有業務用戶 |
| RESOURCE | CREATE TABLE/SEQUENCE/PROCEDURE/TRIGGER 等開發權限 | 開發人員、應用賬號 |
| DBA | 所有系統權限、WITH ADMIN OPTION | 數據庫管理員 |
最佳實踐:生產環境嚴禁直接授予 DBA,按最小權限原則定制專用角色(如 APP_READONLY、APP_READWRITE、APP_ADMIN),納入權限變更審批流程。