以下是修改 Oracle 数据库用户密码并设置密码永不过期的详细操作步骤:
一、修改用户密码
1. 使用 ALTER USER 命令
-- 以管理员身份登录(如 sysdba)
sqlplus / as sysdba
-- 修改用户密码(示例用户为 scott)
ALTER USER scott IDENTIFIED BY 新密码;
2. 使用 PASSWORD 命令(仅适用于当前用户)
-- 切换到普通用户
CONNECT scott/旧密码
-- 修改当前用户密码
PASSWORD
-- 输入旧密码,再输入两次新密码
二、设置密码永不过期
Oracle 的密码有效期由 用户配置文件(Profile) 控制。默认使用 DEFAULT Profile,需修改其策略。
1. 查看当前密码有效期
-- 查看 DEFAULT Profile 的密码策略
SELECT * FROM dba_profiles
WHERE profile = 'DEFAULT'
AND resource_name = 'PASSWORD_LIFE_TIME';
2. 修改密码有效期为永不过期
-- 修改 DEFAULT Profile(影响所有使用该 Profile 的用户)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
3. 创建自定义 Profile(可选)
若需单独设置某个用户的密码策略,可创建新 Profile:
-- 创建新 Profile
CREATE PROFILE no_expire_profile LIMIT
PASSWORD_LIFE_TIME UNLIMITED
FAILED_LOGIN_ATTEMPTS UNLIMITED;
-- 将用户分配到新 Profile
ALTER USER scott PROFILE no_expire_profile;
三、重置已过期用户的密码
若用户密码已过期,需先解除过期状态:
-- 修改密码并解除过期
ALTER USER scott IDENTIFIED BY 新密码 ACCOUNT UNLOCK;
四、验证密码策略
-- 查看用户的密码过期时间
SELECT username, account_status, expiry_date
FROM dba_users
WHERE username = 'SCOTT';
-- 输出示例:
USERNAME ACCOUNT_STATUS EXPIRY_DATE
SCOTT OPEN 10-JAN-2030 (表示永不过期)
五、注意事项
-
权限要求
- 修改其他用户密码需
ALTER USER权限。 - 修改 Profile 需
ALTER PROFILE权限(通常需 DBA 角色)。
- 修改其他用户密码需
-
安全风险密码永不过期可能违反安全策略,建议仅对服务账户使用,普通用户应定期更新密码。
-
Oracle 版本差异
- Oracle 12c 及以上:若启用多租户(CDB/PDB),需在 PDB 中执行操作:
ALTER SESSION SET CONTAINER = pdb_name;
- Oracle 12c 及以上:若启用多租户(CDB/PDB),需在 PDB 中执行操作:
-
密码复杂度规则
若启用了密码复杂度函数(如VERIFY_FUNCTION),需满足复杂度要求:-- 查看密码复杂度函数 SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_VERIFY_FUNCTION';
六、操作示例
完整流程
-- 1. 登录数据库
sqlplus / as sysdba
-- 2. 修改用户密码
ALTER USER scott IDENTIFIED by NewPass123;
-- 3. 设置密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
-- 4. 验证设置
SELECT username, expiry_date FROM dba_users WHERE username = 'SCOTT';
总结
通过 ALTER USER 修改密码,结合 ALTER PROFILE 调整密码有效期策略,即可实现密码永不过期。建议仅在必要时使用此配置,并遵循企业安全规范。
评论区