Oracle数据库在安装完成后会创建若干默认用户,其中SYS、SYSTEM、SYSMAN等账号拥有极高权限。如果这些账号继续使用初始密码或弱密码,整个数据库系统就相当于大门敞开。修改默认用户密码是运维中最基础也最不能跳过的安全动作。

一、常见的Oracle默认用户
在理解如何改密之前,先要弄清楚究竟有哪些默认用户需要关注。通常Oracle数据库自带的用户分为特权用户、管理用户和示例用户三类。特权用户如SYS是数据库字典的拥有者,能以SYSDBA身份登录;SYSTEM是普通管理员,负责日常运维;SCOTT则是供学习的示例用户,默认密码常为tiger。
不同版本中默认用户数量不等,但SYS与SYSTEM几乎存在于所有安装中。从Oracle 11g开始,很多示例用户默认被锁定,不过SYS和SYSTEM始终处于开放状态。如果管理员未主动修改密码,攻击者利用公开文档就能尝试登录,这也是大量勒索事件的根源。
二、使用SQL*Plus修改密码
最通用的改密方式是通过命令行工具SQL*Plus。以修改SYSTEM密码为例,先用具备SYSDBA权限的账号连接数据库,执行ALTER USER语句即可。具体命令为:ALTER USER SYSTEM IDENTIFIED BY 新密码; 执行后系统会提示用户已更改。这种方式不依赖图形界面,适合远程服务器操作。
需要注意,密码设置应符合复杂度要求,比如长度超过八位,混合字母与数字。若数据库开启了密码验证函数,过于简单的密码会被拒绝。修改SYS用户时,建议在服务器本机使用操作系统认证登录,避免在网络上传递高权限凭证。示例如下:
- 连接:sqlplus / as sysdba
- 改密:ALTER USER SYS IDENTIFIED BY StrongPass#2023;
- 验证:CONN SYS/StrongPass#2023 AS SYSDBA;
三、通过Oracle Enterprise Manager改密
对于习惯图形界面的管理员,Oracle Enterprise Manager(OEM)提供了直观操作。登录控制台后,进入“用户”管理页面,搜索目标默认用户,点击编辑即可在表单中输入新密码并保存。该方法降低了命令记错的风险,也方便批量查看用户状态。
OEM还会在改密时提示是否同时解锁账户或设置过期策略。例如SCOTT用户若被锁定,可在同一界面先解锁再设密。对于有多名运维人员的团队,图形化方式更易审计谁在何时修改了哪个账号,减少误操作带来的业务中断。
四、修改密码后的必要动作
改完密码不是结束,还需确认应用连接串已同步更新。很多系统把SYSTEM密码写在配置文件里,若只改库不改文件,服务启动就会报ORA-01017错误。应梳理中间件、备份脚本和监控工具中用到的账号,统一替换凭据。
另外,对不需要的默认用户如OUTLN、MGMT_VIEW等,改密后可直接锁定。锁定命令为ALTER USER 用户名 ACCOUNT LOCK; 这样即便密码泄露,攻击者也无法登录。定期用DBA_USERS视图检查账户状态,是长期安全的保障。
| 用户名称 | 默认权限 | 建议操作 |
|---|---|---|
| SYS | 最高特权SYSDBA | 强密码且仅本机认证 |
| SYSTEM | 管理员 | 强密码并限制远程登录 |
| SCOTT | 示例用户 | 改密或锁定 |
五、密码策略与日常管理
Oracle支持通过PROFILE设置密码生命周期、失败锁定次数等。创建专用PROFILE并指派给默认用户,可强制每九十天改密。例如CREATE PROFILE sec_limit LIMIT PASSWORD_LIFE_TIME 90; 再ALTER USER SYSTEM PROFILE sec_limit; 即可生效。
日常运维中,建议把默认用户改密写入上线检查清单,每次数据库升级或迁移后重新确认。结合审计功能记录登录失败,能及时发现暴力破解企图。只有把修改密码当作持续动作,而非一次性任务,数据库才能真正稳固。