Oracle中用户密码过期修改为不限制的具体步骤

好的,在 Oracle 数据库中,将用户密码的过期策略从有限制修改为“不限制”(即永不过期),通常需要两个步骤:

  1. 修改用户的配置文件​:将一个特定的密码配置文件分配给该用户,该配置文件被设置为密码永不过期。
  2. 重置用户的密码​:使新的配置文件设置立即生效。

以下是详细的操作步骤和说明。

图片[1]_Oracle中用户密码过期修改为不限制的具体步骤_知途无界

核心概念:概要文件

在 Oracle 中,密码策略是通过 ​概要文件​ 来管理的。每个用户都必须关联一个概要文件,该文件定义了密码的生命周期规则,包括:

  • PASSWORD_LIFE_TIME:密码有效期(天数)。
  • PASSWORD_GRACE_TIME:密码过期后的宽限期(天数)。
  • PASSWORD_REUSE_TIME:密码重用前必须经过的天数。
  • FAILED_LOGIN_ATTEMPTS:登录失败多少次后锁定账户。
  • …等等。

我们的目标是创建一个或修改一个概要文件,将其 PASSWORD_LIFE_TIME 设置为 UNLIMITED


方法一:使用现有的 DEFAULT 概要文件(如果它已被修改)

有时 DBA 可能已经将数据库的 DEFAULT 概要文件修改为无限制。你可以先检查 DEFAULT 概要文件的设置。

步骤 1:以 DBA 身份连接到数据库

你需要使用具有 DBA 权限的用户(如 SYSSYSTEM)登录 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;

验证修改是否成功

执行以下查询,确认用户的概要文件和概要文件的设置都已正确更新。

  1. 检查用户的概要文件分配情况:​SELECT username, profile FROM dba_users WHERE username = 'YOUR_USERNAME'; -- 用户名通常大写 确保 PROFILE 列显示的是 PASSWORD_UNLIMITED(如果你用了方法二)或者是 DEFAULT(并且你已确认 DEFAULT 已修改)。
  2. 再次检查概要文件的详细设置(可选):​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 PROFILEALTER USER 的系统权限(通常是 DBA 角色)。
  • 安全风险:​​ 将密码设置为永不过期会降低数据库的安全性。这通常用于服务账户、应用程序连接账户或特定测试环境,而不应轻易用于普通交互式用户账户。请评估其带来的安全风险。
  • 密码复杂性:​​ 即使密码永不过期,也应遵循强密码策略。PASSWORD_VERIFY_FUNCTION 参数可以用于强制密码复杂性,它在我们创建的 PASSWORD_UNLIMITED 概要文件中没有被设置,如果需要可以添加进去。
© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞57 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容