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

Oracle 用戶、權限與角色管理完整指南

     編輯:Oracle 教學

Oracle 用戶、權限與角色管理完整指南

本文系統整理 Oracle 資料庫安全架構的核心三要素:使用者帳號、系統/物件權限、角色管理,並提供實戰 SQL 範例。

一、使用者管理

1. 建立使用者

CREATE USER username IDENTIFIED BY password
  [DEFAULT TABLESPACE tablespace_name]
  [TEMPORARY TABLESPACE temp_tablespace_name];

可查詢 USER_USERS 取得預設表空間資訊。

2. 修改密碼

ALTER USER username IDENTIFIED BY new_password;
-- 或當前登入用戶自行修改
PASSWORD

3. 刪除使用者

DROP USER username;              -- 僅限無物件用戶
DROP USER username CASCADE;      -- 連同 schema 物件一併刪除

二、系統權限

允許執行特定資料庫操作(如 DDL)。常見權限:CREATE SESSION、CREATE TABLE、CREATE ANY TABLE、DBA 等。授權語法:

GRANT privilege_name TO username [WITH ADMIN OPTION];

WITH ADMIN OPTION 允許受授者再授予他人。

三、物件權限

針對特定物件(表、視圖、序列等)的操作權限(SELECT、INSERT、UPDATE、DELETE、EXECUTE 等)。

1. 授予物件權限

GRANT SELECT, INSERT ON schema.table TO username [WITH GRANT OPTION];

2. 查詢已授予權限

  • USER_TAB_PRIVS_MADE:我授予他人的表權限
  • USER_COL_PRIVS_MADE:我授予他人的欄位權限
  • USER_TAB_PRIVS_RECD:我接收到的表權限
  • USER_COL_PRIVS_RECD:我接收到的欄位權限

3. 撤銷物件權限

REVOKE INSERT ON schema.table FROM username;

注意:撤銷物件權限會級聯移除受授者再授予的權限;系統權限撤銷則不級聯。

4. 同義詞簡化存取

-- 私有同義詞
CREATE SYNONYM synonym_name FOR schema.table;

-- 公共同義詞(需 CREATE PUBLIC SYNONYM 權限)
CREATE PUBLIC SYNONYM synonym_name FOR schema.table;

四、角色管理

角色是權限的集合,簡化批量授權。

核心操作

  • 建立: CREATE ROLE role_name [IDENTIFIED BY password];
  • 授權給角色: GRANT privilege TO role_name;
  • 授予使用者: GRANT role_name TO username;
  • 啟用/停用: SET ROLE role_name [IDENTIFIED BY password]; / SET ROLE NONE;
  • 預設角色: ALTER USER username DEFAULT ROLE role_name | ALL [EXCEPT role_name] | NONE;
  • 查詢: USER_ROLE_PRIVS、ROLE_SYS_PRIVS、ROLE_TAB_PRIVS
  • 撤銷/刪除: REVOKE role_name FROM username; / DROP ROLE role_name;

角色優勢

  1. 集中管理權限,一次授予多用戶。
  2. 權限變更自動套用至所有擁有該角色的用戶。
  3. 支援密碼保護,需驗證才能啟用。
  4. 可巢狀授予(角色授予角色)。

善用角色機制,能大幅降低大型環境下的權限維護複雜度。

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