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

Oracle 修改用戶名與密碼實操指南(含密碼臨時替換技巧)

     編輯:Oracle 資料庫基礎

場景

有時需以某用戶身份操作,但不知其密碼,又不想永久修改密碼。本文介紹修改用戶名、密碼的標準方法,以及「臨時替換密碼、事後恢復」的進階技巧。

一、修改前準備(以 Linux 為例)

  1. SSH 以 root 登入服務器
  2. 切換至 oracle 用戶:su - oracle
  3. 進入 SQL*Plus:sqlplus /nolog
  4. 以 SYSDBA 登入:conn sys/password as sysdba

二、修改用戶名(需更新基表 USER$,謹慎操作)

-- 1. 查詢目標用戶的 USER#
SELECT user#, name FROM user$;  -- 假設 user#=66

-- 2. 修改用戶名
UPDATE user$ SET name='新用戶名' WHERE user#=66;
COMMIT;

警告: 直接更新 USER$ 屬於非支持操作,極易導致數據字典不一致,生產環境強烈建議使用 RENAME USER(12c+)或導出/導入重建用戶。

三、修改用戶密碼(標準方法)

ALTER USER 用戶名 IDENTIFIED BY 新密碼;
COMMIT;

四、進階技巧:臨時替換密碼、用完恢復(不讓用戶感知)

原理:DBA_USERS.PASSWORD 存儲的是密碼哈希值。先備份哈希,修改為已知密碼,操作完成後用 IDENTIFIED BY VALUES '哈希值' 恢復原密碼。

-- 1. 以 SYSDBA 登入,查詢目標用戶當前密碼哈希
SELECT username, password FROM dba_users WHERE username='SYSTEM';
-- 假設返回哈希:2D594E86F93B17A1

-- 2. 修改為臨時密碼
ALTER USER system IDENTIFIED BY manager;

-- 3. 以臨時密碼登入,執行所需操作
CONNECT system/manager
-- ... do something ...

-- 4. 恢復原密碼哈希
CONNECT sys/oracle as sysdba
ALTER USER system IDENTIFIED BY VALUES '2D594E86F93B17A1';

-- 5. 驗證原密碼生效
CONNECT system/oracle  -- 成功
CONNECT system/manager -- 失敗 ORA-01017

五、輔助操作:解鎖用戶

ALTER USER 用戶名 ACCOUNT UNLOCK;

總結

  • 常規修改密碼用 ALTER USER ... IDENTIFIED BY;
  • 需臨時冒用身份時,備份哈希 → 改密碼 → 操作 → 還原哈希,用戶無感;
  • 直接更新 USER$ 修改用戶名風險極高,非必要勿用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved