Oracle 忘记密码的解决办法(conn / as sysdba)

1 概述

又想不起数据库密码了 →_→
-- 查询 数据库中所有的用户:
select * from dba_users t order by t.expiry_date desc;

-- 若 非 sys、system 用户,则以 system 用户登录,执行下列修改密码命令
-- 若 是 system 用户,继续往下看
alter user <username> identified by <password>;

默认用户名/密码:

用户名 密码 sys change_on_install system manager scott tiger

2 修改密码

步骤:

1. 打开运行窗口: win + r, 输入 cmd
2. 输入: sqlplus /nolog   (无日志登录,避免密码泄露,请注意 /nolog 之间不能留空格)
3. 输入: conn / as sysdba (无用户、密码,最高权限登录. 若报错,见下列解决办法)
4. 修改密码: alter user scott identified by scott;
   -- 修改 账户 scott 的密码为 scott
   -- 注意 修改你自己的哦

注意项:

    上述操作能够更改 任何 登录用户的密码,包括 sys 和 system 一般来说,建议使用 sys 或 system 登录,来修改其它登录用户的密码

3 可能遇到的问题

3.1 conn / as sysdba 权限不足

原理解析:

Oracle 数据库有三种登录验证方式
	(1) 操作系统身份认证, 如: conn / as sysdba
	(2) 数据库认证,      如: username/password@db
	(3) 密码文件认证,    如: $ORACLE_HOME/network/admin/sqlnet.ora 
	    -- 比较麻烦,了解即可

原理(操作系统身份认证):
    (1) 当电脑开机时登录的用户,如 "Administrator",
        若它在你电脑的 "ora_dba" 组中,可以在 "我的电脑" 点击右键,
        找到 "管理",选择 "本地用户和组", 发现有一个组叫 "ora_dba", 
        双击它,看到成员列表中有 "Administrator"(也就是可以用 conn / as sysdba), 
    (2) Oracle 会进行操作系统验证,发现你当前登录的用户就属于 "ora_dba" 组,因此才登录成功,
    (3) 你也可以吧 "ora_dba" 组中的 "Administrator" 用户删除,
        再执行命令 conn / as sysdba, 就发现进不去了

解决办法:

    我的电脑 -> 管理 -> 本地用户和组:查看当前用户是否在 ora_dba 组 中
经验分享 程序员 微信小程序 职场和发展