首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 用戶權限查詢與授權實操指南:從 session_privs 到 DBA 授權

     編輯:Oracle 資料庫基礎

前言

掌握用戶權限的查詢與授權是 Oracle DBA 的基本功。本文提供查詢當前會話權限、檢視系統權限視圖、以及透過 SYS 用戶授權新用戶的標準操作流程。

一、查詢當前會話擁有的系統權限

最直接的方法是查詢 SESSION_PRIVS 視圖,它只顯示當前會話生效的權限(含角色繼承)。

SELECT * FROM session_privs;

輸出範例:

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE ANY DIRECTORY
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
DEBUG CONNECT SESSION

二、查詢用戶被授予的系統權限(含角色間接授予)

若需查詢特定用戶(而非當前會話)的權限,需查詢 DBA_SYS_PRIVS(需 DBA 權限)或 USER_SYS_PRIVS(查自己的)。

-- 查詢用戶 CONQUER 的系統權限
SELECT * FROM dba_sys_privs WHERE grantee = 'CONQUER';

三、查詢用戶擁有的角色

SELECT * FROM dba_role_privs WHERE grantee = 'CONQUER';

四、查詢角色包含的系統權限

SELECT * FROM role_sys_privs WHERE role = 'DBA';

五、實操:建立用戶並授權基本連線權限

1. 以 SYSDBA 連線

CONN sys/123456@10.10.1.111/orcl AS SYSDBA

2. 建立用戶(範例密碼請自行加強)

CREATE USER conquer IDENTIFIED BY conquer_password
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp;

3. 授予建立會話權限(最基本連線權限)

GRANT CREATE SESSION TO conquer;

4. 視需求授予資源角色或特定權限

-- 授予建立表、序列、程序等開發常用權限
GRANT CREATE TABLE, CREATE SEQUENCE, CREATE PROCEDURE, CREATE VIEW TO conquer;

-- 或授予 RESOURCE 角色(含上述權限,12c 後不含 UNLIMITED TABLESPACE)
GRANT RESOURCE TO conquer;

-- 指定表空間配額(否則無法建表)
ALTER USER conquer QUOTA UNLIMITED ON users;

六、權限管理最佳實踐

  • 最小權限原則:僅授予業務必要的權限,避免直接授 DBA 角色給應用帳號。
  • 角色化管理:建立應用角色(如 APP_READONLY, APP_DEVELOPER),將權限授予角色,再將角色授予用戶,便於批量維護。
  • 定期審計:定期查詢 DBA_SYS_PRIVS、DBA_TAB_PRIVS 核對權限異動。
  • 密碼策略:使用 Profile 強制密碼複雜度、過期時間與鎖定規則。

總結

從 SESSION_PRIVS 快速檢視當前權限,到透過 DBA_* 視圖全面掌握用戶權限全貌,再到標準化的建用戶、授權流程,構成了 Oracle 權限管理的閉環。遵循最小權限、角色化管理,能有效降低安全風險與維護成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved