好的,在 Oracle 数据库中,将用户密码的过期策略从有限制修改为“不限制”(即永不过期),通常需要两个步骤:
- 修改用户的配置文件:将一个特定的密码配置文件分配给该用户,该配置文件被设置为密码永不过期。
- 重置用户的密码:使新的配置文件设置立即生效。
以下是详细的操作步骤和说明。
![图片[1]_Oracle中用户密码过期修改为不限制的具体步骤_知途无界](https://zhituwujie.com/wp-content/uploads/2025/12/d2b5ca33bd20251219094115.png)
核心概念:概要文件
在 Oracle 中,密码策略是通过 概要文件 来管理的。每个用户都必须关联一个概要文件,该文件定义了密码的生命周期规则,包括:
PASSWORD_LIFE_TIME:密码有效期(天数)。PASSWORD_GRACE_TIME:密码过期后的宽限期(天数)。PASSWORD_REUSE_TIME:密码重用前必须经过的天数。FAILED_LOGIN_ATTEMPTS:登录失败多少次后锁定账户。- …等等。
我们的目标是创建一个或修改一个概要文件,将其 PASSWORD_LIFE_TIME 设置为 UNLIMITED。
方法一:使用现有的 DEFAULT 概要文件(如果它已被修改)
有时 DBA 可能已经将数据库的 DEFAULT 概要文件修改为无限制。你可以先检查 DEFAULT 概要文件的设置。
步骤 1:以 DBA 身份连接到数据库
你需要使用具有 DBA 权限的用户(如 SYS、SYSTEM)登录 SQL*Plus 或其他数据库客户端。
sqlplus / as sysdba
-- 或者
sqlplus system/your_password@your_service_name
步骤 2:检查 DEFAULT 概要文件的当前设置
执行以下查询来查看 DEFAULT 概要文件中与密码生命周期相关的参数:
SELECT profile, resource_name, limit
FROM dba_profiles
WHERE profile = 'DEFAULT'
AND resource_name IN ('PASSWORD_LIFE_TIME', 'PASSWORD_GRACE_TIME');
结果分析:
- 如果
PASSWORD_LIFE_TIME的值是UNLIMITED,那么所有使用DEFAULT概要文件的用户密码都已经永不过期。你无需做任何事。 - 如果
PASSWORD_LIFE_TIME是一个数字(比如180),则表示密码有 180 天的有效期,你需要继续下面的操作。
步骤 3:修改 DEFAULT 概要文件(谨慎操作!)
警告: 修改 DEFAULT 概要文件会影响所有使用它的用户。请确保这是你想要的结果。
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED; -- 同时将宽限期也设为无限
步骤 4:让修改对用户立即生效
仅仅修改概要文件,对已存在用户的当前会话不会立即生效。你需要重置该用户的密码(即使密码不变)。
-- 将 ‘your_username’ 替换为实际的用户名
ALTER USER your_username IDENTIFIED BY your_current_password;
注意: 这里的关键是 IDENTIFIED BY 后面跟的是用户当前的密码。执行这个语句相当于“刷新”了用户的密码状态,使其应用新的概要文件规则。如果你不知道当前密码,需要设置一个新密码,并通知用户。
方法二:创建并使用一个新的自定义概要文件(推荐,更安全)
为了避免影响其他用户,最佳实践是创建一个新的概要文件,只给需要“密码永不过期”的特定用户使用。
步骤 1:以 DBA 身份连接数据库
同上。
sqlplus / as sysdba
步骤 2:创建一个名为 PASSWORD_UNLIMITED 的新概要文件
CREATE PROFILE PASSWORD_UNLIMITED LIMIT
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED
FAILED_LOGIN_ATTEMPTS UNLIMITED -- 可选:同时取消账户锁定
PASSWORD_REUSE_TIME UNLIMITED -- 可选:允许随时重用旧密码
PASSWORD_REUSE_MAX UNLIMITED; -- 可选:允许随时重用旧密码
这个概要文件将所有密码相关的限制都设为了无限制。
步骤 3:将新概要文件分配给目标用户
将 your_username 替换为你想要修改的实际用户名。
ALTER USER your_username PROFILE PASSWORD_UNLIMITED;
步骤 4:重置用户密码以使新概要文件生效
同样,需要重置密码来激活新的配置文件。
-- 方式 A:保持原密码不变(需要知道当前密码)
ALTER USER your_username IDENTIFIED BY your_current_password;
-- 方式 B:为用户设置一个新密码
ALTER USER your_username IDENTIFIED BY new_strong_password;
验证修改是否成功
执行以下查询,确认用户的概要文件和概要文件的设置都已正确更新。
- 检查用户的概要文件分配情况:
SELECT username, profile FROM dba_users WHERE username = 'YOUR_USERNAME'; -- 用户名通常大写确保PROFILE列显示的是PASSWORD_UNLIMITED(如果你用了方法二)或者是DEFAULT(并且你已确认 DEFAULT 已修改)。 - 再次检查概要文件的详细设置(可选):
SELECT resource_name, limit FROM dba_profiles WHERE profile = 'PASSWORD_UNLIMITED' -- 或者 ‘DEFAULT’ AND resource_type = 'PASSWORD';确认PASSWORD_LIFE_TIME的值为UNLIMITED。
总结与注意事项
| 操作场景 | 推荐方法 | 关键命令 |
|---|---|---|
| 仅为一个或少数用户取消密码过期 | 方法二(创建新概要文件) | CREATE PROFILE ..., ALTER USER ... PROFILE ... |
| 希望所有新用户默认密码永不过期 | 方法一(修改 DEFAULT 概要文件) | ALTER PROFILE DEFAULT LIMIT ... |
| 让配置立即生效 | 必须执行 | ALTER USER ... IDENTIFIED BY ... |
重要提示:
- 权限: 执行这些操作的用户必须拥有
ALTER PROFILE和ALTER USER的系统权限(通常是DBA角色)。 - 安全风险: 将密码设置为永不过期会降低数据库的安全性。这通常用于服务账户、应用程序连接账户或特定测试环境,而不应轻易用于普通交互式用户账户。请评估其带来的安全风险。
- 密码复杂性: 即使密码永不过期,也应遵循强密码策略。
PASSWORD_VERIFY_FUNCTION参数可以用于强制密码复杂性,它在我们创建的PASSWORD_UNLIMITED概要文件中没有被设置,如果需要可以添加进去。

























暂无评论内容