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

Oracle 用戶管理全攻略:建立、授權、修改密碼、解鎖、查詢權限的標準化操作手冊

     編輯:Oracle 資料庫基礎

前言:用戶管理是資料庫安全的第一道防線

Oracle 採用「用戶 = Schema」模型,用戶建立即創建同名 Schema。標準化的建立、授權、密碼策略、鎖定/解鎖、權限審計流程,是合規與安全的基石。本文提供生產環境可直接執行的標準操作手冊,覆蓋全生命週期管理。

一、建立用戶:標準模板與參數詳解

CREATE USER "APP_USER" 
  PROFILE "DEFAULT"                    -- 資源/密碼配置檔
  IDENTIFIED BY "ComplexP@ssw0rd"      -- 密碼 (建議 12+ 位、大小寫、數字、特殊字元)
  DEFAULT TABLESPACE "APP_DATA"        -- 預設永久表空間
  TEMPORARY TABLESPACE "TEMP"          -- 預設臨時表空間
  QUOTA UNLIMITED ON "APP_DATA"        -- 表空間配額 (或具體大小 100M)
  ACCOUNT UNLOCK;                      -- 明確解鎖 (預設即解鎖)

關鍵選項

  • PROFILE:綁定 PASSWORD_LIFE_TIME, FAILED_LOGIN_ATTEMPTS, PASSWORD_VERIFY_FUNCTION 等安全策略
  • QUOTA:必須顯式授予表空間配額,否則用戶無法建表 (ORA-01950)
  • ACCOUNT LOCK/UNLOCK:初建建議 UNLOCK,離職/異常立即 LOCK

二、授權體系:最小權限原則的三層模型

1. 系統權限 (System Privileges) — 能做什麼操作

-- 開發/測試環境常用角色 (生產嚴禁直接授 DBA)
GRANT CREATE SESSION TO app_user;              -- 基礎連線權限 (等同 CONNECT 角色核心)
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE, CREATE TRIGGER TO app_user;
GRANT CREATE SYNONYM, CREATE DATABASE LINK TO app_user;

-- 生產環境最小權限集 (示例)
GRANT CREATE SESSION TO prod_user;
-- 具體物件權限走下層物件授權,不授 CREATE ANY TABLE 等 ANY 權限

2. 物件權限 (Object Privileges) — 能動什麼資料

-- 讀寫權限分離
GRANT SELECT, INSERT, UPDATE, DELETE ON schema1.table_a TO app_user;
GRANT SELECT ON schema1.table_b TO app_user;  -- 唯讀表

-- 參考權限 (建立外鍵需)
GRANT REFERENCES ON schema1.parent_table TO app_user;

-- 執行權限 (套件/函數/過程)
GRANT EXECUTE ON schema1.pkg_biz TO app_user;

3. 角色 — 權限集合的容器化管理

-- 建立業務角色
CREATE ROLE app_readonly;
CREATE ROLE app_readwrite;
CREATE ROLE app_admin;

-- 角色授權物件權限
GRANT SELECT ON schema1.table_a TO app_readonly;
GRANT SELECT, INSERT, UPDATE, DELETE ON schema1.table_a TO app_readwrite;
GRANT ALL ON schema1.table_a TO app_admin;

-- 用戶授權角色
GRANT app_readwrite TO app_user;
GRANT app_admin TO dba_user;

-- 角色授權角色 (支援嵌套)
GRANT app_readonly TO app_readwrite;

三、密碼管理與帳號狀態控制

-- 修改密碼 (用戶自助 / DBA 代理)
ALTER USER app_user IDENTIFIED BY "NewComplexP@ssw0rd";
-- 或由用戶執行
PASSWORD  -- 交互式修改,舊密碼驗證

-- 解鎖帳號 (連續失敗登入觸發鎖定)
ALTER USER app_user ACCOUNT UNLOCK;

-- 鎖定帳號 (離職/安全事件)
ALTER USER app_user ACCOUNT LOCK;

-- 過期密碼強制修改 (下次登入必改)
ALTER USER app_user PASSWORD EXPIRE;

-- 歷史密碼驗證 (防重用)
-- 需在 PROFILE 設置 PASSWORD_REUSE_TIME / PASSWORD_REUSE_MAX

四、權限審計查詢:標準化巡檢 SQL

審計目標查詢視圖關鍵 SQL
所有用戶列表DBA_USERS / ALL_USERS / USER_USERSSELECT username, account_status, lock_date, expiry_date, default_tablespace FROM dba_users ORDER BY username;
用戶系統權限DBA_SYS_PRIVS / USER_SYS_PRIVSSELECT * FROM dba_sys_privs WHERE grantee = 'APP_USER';
用戶物件權限DBA_TAB_PRIVS / USER_TAB_PRIVSSELECT * FROM dba_tab_privs WHERE grantee = 'APP_USER';
所有角色DBA_ROLESSELECT * FROM dba_roles;
用戶擁有角色DBA_ROLE_PRIVS / USER_ROLE_PRIVSSELECT * FROM dba_role_privs WHERE grantee = 'APP_USER';
角色擁有的系統權限ROLE_SYS_PRIVSSELECT * FROM role_sys_privs WHERE role = 'APP_READWRITE';
角色擁有的物件權限ROLE_TAB_PRIVSSELECT * FROM role_tab_privs WHERE role = 'APP_READWRITE';
代理用戶權限 (Proxy)DBA_PROXIESSELECT * FROM dba_proxies WHERE proxy = 'APP_USER';

五、SQL*Plus 快速入門操作流 (新手必讀)

  1. 連線:sqlplus system/password@service_name (或 / as sysdba 本機)
  2. 查看當前用戶:SHOW USER
  3. 建立用戶並授權:
    CREATE USER dev IDENTIFIED BY password;
    GRANT CONNECT, RESOURCE TO dev;
  4. 以新用戶連線:CONNECT dev/password@service_name
  5. 建立表空間 (需 DBA):
    CREATE TABLESPACE dev_data DATAFILE 'D:\oradata\dev_data01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;

六、初始化參數與啟動/關閉操作 (補充)

  • 參數檔:init.ora (PFILE) / spfile.ora (SPFILE),修改需重啟或 ALTER SYSTEM SET ... SCOPE=SPFILE
  • 啟動:STARTUP (等價 NOMOUNT → MOUNT → OPEN)
  • 關閉:SHUTDOWN IMMEDIATE (正常) / SHUTDOWN ABORT (緊急,下次啟動需例項恢復)
  • 表空間建立工具:Enterprise Manager / CREATE TABLESPACE SQL / DBCA
  • 回滾段:CREATE ROLLBACK SEGMENT (手動管理模式) / 自動 UNDO 管理 (推薦 UNDO_MANAGEMENT=AUTO)

七、預設帳號與密碼 (安裝後必改)

總結

用戶管理不是「建個帳號給密碼」那麼簡單。標準化模板、最小權限分層、密碼策略綁定 Profile、定期權限審計 SQL、預設帳號清理,這五大支柱構成合規的用戶治理體系。請將本手冊作為團隊「用戶管理 SOP」,每個新用戶建立、每次權限變更、每季度審計,都按此執行、留痕、複核。安全,不在於多複雜的技術,而在於多嚴格的紀律。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
用戶預設密碼用途必改動作
SYSCHANGE_ON_INSTALL最高權限 (SYSDBA)立即修改、鎖定遠程登入 (SEC_CASE_SENSITIVE_LOGON=TRUE)
SYSTEMMANAGER管理權限立即修改
SCOTTTIGER示範用戶鎖定/刪除 (生產環境)
SYSMANOEM_TEMPOEM 管理立即修改
INTERNALORACLE舊版 SVRMGRL 兼容12c+ 已移除