Oracle DB のパスワードが分からなくなった時の裏技
Oracle Database で、あるユーザのパスワードが分からなくなった時に、以下の方法でパスワードを変更することができる。
-- ALTER USER 権限を持つユーザで接続する
-- SYS ユーザのパスワードを「test」に変更する
ALTER USER SYS IDENTIFIED BY test;
-- パスワード test でログインできるようになる
CONNECT SYS/test@hoge AS SYSDBA
実は ALTER USER 権限さえあれば、元のパスワードが分からなくとも、他のユーザのパスワードは変更できる。
さらに、以下の手順を踏めば、変更したパスワードを元に戻すこともできる。そのユーザを使いたいがパスワードが分からない、という時にこれで回避できるだろう。
-- ALTER USER 権限を持つユーザで接続する
-- 予め、ユーザ名と「パスワードの暗号文字列」を控えておく
SELECT USERNAME, PASSWORD FROM DBA_USERS;
/* ココカラさっきと同じ */
-- SYS ユーザのパスワードを「test」に変更する
ALTER USER SYS IDENTIFIED BY test;
-- パスワード test でログインする
CONNECT SYS/test@hoge AS SYSDBA
-- SYS ユーザとして好きに作業する
/* ココマデさっきと同じ */
-- 再度 ALTER USER 権限を持つユーザで接続する
-- SYS ユーザのパスワードを元の暗号文字列に戻す
ALTER USER SYS IDENTIFIED BY VALUES '【元の暗号文字列】';
暗号化された文字列を BY VALUES
で直接渡すことで、仮に元のパスワード自体が分からなくとも、元のパスワードに戻せる。
さすがに暗号化されたパスワード文字列を復号する方法はないようなので、以前のパスワードを知る方法は諦めるしか…。
- 参考 : Code Tips