Oracle 修改SYS、system用户密码

本文介绍Oracle数据库中SYS与SYSTEM用户的区别及其密码管理方法。涵盖了如何修改这两个用户的密码,操作系统认证与Oracle认证的区别,以及如何切换认证方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户。在数据库安装完之后,应立即修改SYS,SYSTEM这两个用户的密码,以保证数据库的安全。

 

安装完之后修改密码方法

cmd命令行下输入 sqlplus / as sysdba;

1.SQL>alter user sys identified by huozhe

2.SQL>grant connect to sys identified by 123456

3. SQL> password system

更改 system 的口令

新口令:

重新键入新口令:

口令已更改

注:法3只适用于SYSTEM

 

验证:

SQL> conn system/huozhe

已连接。

SQL> show user

USER  "SYSTEM"

SQL> exit

 

注:SYSSYSTEM用户之间可以相互修改口令

 

修改SYS用户口令后的登录

SYS用户的口令修改成123456后,可按以下几种方法登录:

1.sqlplus / as sysdba 【以操作系统认证的方式登录,不需要用户名和口令】

2.sqlplus sys/abcde as sysdba;

3.sqlplus sys/ as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11 6 19:10:54 2012

 

输入口令:

注意:这里提示输入口令,不输入口令直接回车

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing optionssqlplus sys as sysdba;

上述语句,都可以登录成功,然后查看当前用户:

SQL> show user

USER  "SYS"

这是为什么呢,为什么修改了口令没有效果,不用口令或者随便用什么口令都可以进入呢。

答案是:认证方法。

 

oracle的口令认证

SYS口令认证分为操作系统认证和Oracle认证方法。

 

操作系统认证方式

对于如果是Unix操作系统,只要是以DBA组中的用户登录的操作系统,就可以以SYSDBA的身份登录数据库,不会验证SYS的口令

对于windows操作系统,在oracle数据库安装后,会自动在操作系统中安装一个名为ORA_DBA的用户组,只要是该组中的用户,即可以SYSDBA的身份登录数据库而不会验证SYS的口令。也可以创建名为ORA_SID_DBA(SID为实例名)的用户组,属于该用户组的用户也具备以上特权。

 

如何修改认证方式

如何修改认证方式为操作系统认证或oracle认证。(windowsunix平台有大同小异)

 

要将认证方式设置为操作系统认证:

1.  修改sqlnet.ora文件

….\ product\11.2.0\ dbhome_2NETWORK\ADMIN\sqlnet.ora

…\product\版本号\home目录\ NETWORK\ADMIN\sqlnet.ora

记事本打开该文件修改参数为

SQLNET.AUTHENTICATION_SERVICES= (NTS)

WINDOWS下,默认就是这样,即使用NT认证

 

2.  修改init.ora文件

….\ product\11.2.0\dbhome_2\dbs\init.ora

说明:…\product\版本号\home目录\dbs\init.ora

记事本打开该文件,修改参数为:

remote_login_passwordfile='NONE'

 

3.重新启动数据库。

SQL> shutdown immediate

SQL> startup open

 

将认证方式设置为oracle认证(密码文件认证)

1.  同上,修改sqlnet.ora

….\ product\11.2.0\ dbhome_2NETWORK\ADMIN\sqlnet.ora

记事本打开该文件,修改参数为:

#SQLNET.AUTHENTICATION_SERVICES= (NTS) #注释掉这句话,即不使用NT认证

或者

SQLNET.AUTHENTICATION_SERVICES= (NONE)

 

2.  同上,修改init.ora

记事本打开该文件,修改参数为:

remote_login_passwordfile='EXCLUSIVE'

或者

remote_login_passwordfile='SHARED'

 

EXCLUSIVE表示只有当前实例使用这个密码文件,且允许有别的用户作为SYSDBA登录进入系统,若选择了SHARED,则表示不止一个实例使用这个密码文件。

 

3.重新启动数据库。

SQL> shutdown immediate

SQL> startup open

 

如果发生sys密码丢失的情况,怎么办?

步骤1.使用system用户进行密码更改

SQL> conn system/huozhe

已连接。

SQL> alter user sys identified by huozhe

 

说明:

1)默认情况下,只要用户具有alter   user的权限,那么可以修改 oracle中任意用户,包括alter   user中的所有optional

2)默认情况下,system账户之所以能修改sys的密码,是因为它属于dba角色,而dba角色当然具有alter   user权限

 

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP SYSAS

------------------------------ ----- ----- -----

SYS                            TRUE  TRUE  FALSE

STUDY                          TRUE  FALSE FALSE

说明现在有sysSTUDY账户拥有sysdbasysoper的权限[STUDY默认创建的]

 

步骤2.创建密码文件

如果存在密码文件(PWDsid.ora),则删除它

路径

….\product\11.2.0\dbhome_2\database\PWDorcl.ora

….\product\版本\home目录\database\PWDsid.ora

 

然后用orapwd.exe创建密码文件

orapwd路径

…\product\11.2.0\dbhome_2\BIN\orapwd.exe

说明:…\product\版本号\home目录\BIN\orapwd.exe

 

--cmd下输入 cd 命令进入到….\product\版本号\home目录\BIN 目录下,然后键入命令

orapwd file=filepath\pwd.ora password=password_of_sys entries=N

 

其中filepath表示密码文件路径,pwd.ora为密码文件名,sid是数据库实例名

eg:

E:\app\Administrator\product\11.2.0\dbhome_2\dbs\PWDorcl.ora

 

entries表示允许最大的超级用户数。

当没有指定文件路径时,密码文件默认存放在…\product\版本号\dbs\目录下。

<think>我们正在讨论如何修改Oracle数据库中SYSSYSTEM用户密码。根据Oracle的安全机制,修改这些特权用户密码需要特定的步骤。以下将详细说明修改密码的方法。###修改SYSSYSTEM用户密码的步骤1. **以特权用户身份登录**首先,你需要以具有足够权限的用户(如SYSSYSTEM)登录到数据库。可以使用SQL*Plus、SQLcl或SQL Developer等工具。 2. **使用ALTERUSER语句**修改用户密码的标准SQL语句是`ALTER USER`。例如,修改SYS用户密码:```sqlALTER USERSYS IDENTIFIEDBY新密码;```同样,修改SYSTEM用户密码:```sqlALTER USERSYSTEM IDENTIFIEDBY新密码;``` 3. **注意事项**-**SYS用户**:SYSOracle数据库的最高权限用户修改密码需要特别小心。在修改SYS用户密码时,确保你当前是以SYS用户或其他具有SYSDBA权限的用户登录。-**密码复杂性**:Oracle可能启用了密码复杂性验证(如使用`utlpwdmg.sql`脚本启用的策略)。如果新密码不符合策略要求,修改操作将失败。你可以临时禁用密码验证(需谨慎)或设置符合策略的密码。- **容器数据库(CDB)与可插拔数据库(PDB)**:如果数据库是容器数据库(CDB),并且需要修改PDB中的SYS/SYSTEM密码,需要先切换到目标PDB:```sqlALTERSESSIONSET CONTAINER= <PDB_NAME>;```然后再执行`ALTER USER`命令。 ###示例:在SQL*Plus中修改密码```sql--以SYS用户登录(需要SYSDBA权限) CONNECT SYS ASSYSDBA;输入当前密码--修改SYS用户密码ALTER USERSYSIDENTIFIED BYnew_password;--修改SYSTEM用户密码ALTER USERSYSTEM IDENTIFIEDBY new_password;--如果是在CDB中修改PDB的密码,例如PDB名为ORCLPDB: ALTERSESSIONSET CONTAINER= ORCLPDB;ALTER USERSYS IDENTIFIEDBY new_password; ALTERUSER SYSTEMIDENTIFIED BYnew_password; ```###常见问题及解决方法1. **权限不足**如果当前登录用户没有`ALTER USER`权限或`SYSDBA`权限,修改操作会失败。确保以`SYS ASSYSDBA`登录。2.**密码验证失败**如果新密码不符合密码策略,会收到错误提示。可以检查密码策略:```sqlSELECT* FROMDBA_PROFILES WHEREPROFILE='DEFAULT' ANDRESOURCE_NAME='PASSWORD_VERIFY_FUNCTION';```若需要临时禁用验证(生产环境不推荐),可执行:```sqlALTERPROFILE DEFAULTLIMITPASSWORD_VERIFY_FUNCTION NULL;```修改密码后再恢复。3.**ORA-01109:数据库未打开**如果数据库处于MOUNT状态(未打开),则无法修改普通用户密码。但SYS用户密码可以在NOMOUNT状态下修改(因为SYS用户是数据库创建的一部分)。建议在数据库打开状态下修改。###引用说明修改Oracle用户密码是基本的数据库管理操作,但涉及SYS/SYSTEM用户时需谨慎[^2][^4]。在容器数据库中,注意会话所在的容器上下文[^4]。密码策略管理也是安全的重要部分[^2]。§§相关问题§§1.如何重置忘记的SYS用户密码?2.Oracle数据库的密码策略如何配置?3.在多租户环境中管理用户密码有哪些注意事项? 4.如何检查Oracle用户密码过期时间?</think>### 修改Oracle数据库中SYSSYSTEM用户密码的方法 #### 步骤详解 1. **以SYSDBA身份连接数据库** 使用SQL*Plus、SQL Developer或其他工具,以特权用户身份登录: ```sql CONNECT / AS SYSDBA ``` 或指定用户名: ```sql CONNECT SYS AS SYSDBA ``` 2. **修改SYS用户密码** ```sql ALTER USER SYS IDENTIFIED BY <新密码>; ``` **注意**:SYSOracle最高权限账户,修改后需同步更新所有使用该密码的服务脚本[^2]。 3. **修改SYSTEM用户密码** ```sql ALTER USER SYSTEM IDENTIFIED BY <新密码>; ``` 4. **容器数据库(CDB/PDB)特殊处理** 若在容器数据库中操作,需切换到目标PDB: ```sql ALTER SESSION SET CONTAINER = <PDB名称>; -- 再执行ALTER USER命令 ``` #### 关键注意事项 - **密码策略**:确保新密码符合复杂度要求(长度、大小写、特殊字符等),可通过查询检查: ```sql SELECT * FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME LIKE 'PASSWORD%'; ``` - **加密表空间**:如果用户表空间已加密,需额外处理密钥管理[^4]。 - **审计依赖**:若启用了Oracle Label Security或Database Vault,修改系统用户密码前需检查审计表依赖关系[^3]。 #### 操作验证 ```sql SELECT username, account_status FROM dba_users WHERE username IN ('SYS','SYSTEM'); ``` 正常状态应为 `OPEN`,若为 `EXPIRED` 表示密码修改成功但需首次登录时重置。 > **重要安全建议** > 修改后立即更新所有应用程序的连接配置,避免服务中断。生产环境建议通过Oracle Enterprise Manager集中管理密码轮换[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值