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

Oracle 密碼遺忘破解兩大招:SYSDBA 直連與 ALTER/CREATE USER 實戰

     編輯:Oracle 資料庫基礎

前提條件

  • 作業系統帳號屬於 ORA_DBA 群組(Windows)或 dba 群組(Linux/Unix)。
  • 擁有伺服器登入權限(實體或 SSH/RDP)。

步驟一:以 SYSDBA 身分免密登入


C:\> sqlplus /nolog
SQL> CONN / AS SYSDBA
Connected.

原理:OS 認證(SQLNET.AUTHENTICATION_SERVICES = (NTS)),驗證 OS 使用者是否在 DBA 群組,通過即授予 SYSDBA 權限,**不需資料庫密碼**。

步驟二:兩種重設密碼方案

方案 A:ALTER USER(用戶已存在)


SQL> ALTER USER scott IDENTIFIED BY new_password;
User altered.
  • 適用於解鎖、重設現有用戶密碼。
  • 若帳號鎖定:ALTER USER scott ACCOUNT UNLOCK;

方案 B:CREATE USER(用戶不存在或欲重建)


SQL> CREATE USER scott IDENTIFIED BY new_password
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON users;

SQL> GRANT CONNECT, RESOURCE, DBA TO scott;  -- 視需求授權
  • 重建用戶會清除原有物件權限、角色、配額,**謹慎使用**。

權限授予速查


-- 角色授予
GRANT CONNECT, RESOURCE TO scott;
GRANT DBA TO scott;  -- 生產環境嚴禁

-- 系統權限
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE TO scott;

-- 物件權限
GRANT SELECT, INSERT ON hr.employees TO scott;

常見變體:12c+ 容器資料庫 (CDB/PDB)


-- 切換至 PDB
SQL> ALTER SESSION SET CONTAINER = pdb1;
-- 再執行 ALTER/CREATE USER

或使用 CONTAINER=ALL 在 CDB$ROOT 建立通用用戶(C## 前綴)。

安全性警示

  1. 物理存取 = 根權限:保護伺服器主機登入,限制 DBA 群組成員。
  2. 審計追蹤:啟用 AUDIT_SYS_OPERATIONS=TRUE、AUDIT_TRAIL=DB,EXTENDED,記錄所有 SYSDBA 操作。
  3. 密碼複雜度:設定 PASSWORD_VERIFY_FUNCTION 強制策略。
  4. 備份驗證:定期測試密碼恢復流程,確保災難時可用。

結語

Oracle 密碼遺忘**不是資料庫故障,而是 OS 層面的授權恢復**。掌握 CONN / AS SYSDBA → ALTER USER(優先)或 CREATE USER(次之)兩步驟,配合帳號解鎖、權限授予,即可在 1 分鐘內恢復存取。切記:保護 OS 登入才是根本防線。

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