gpt4 book ai didi

database - 为 Oracle 中的特定用户设置新密码时需要旧密码

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:21 25 4
gpt4 key购买 nike

Oracle 12 是否支持在更改特定用户的密码时要求使用旧密码?

我想要什么:

ALTER USER user_a IDENTIFIED BY secret123;
-- ERROR, missing old password

ALTER USER user_a IDENTIFIED BY secret456 REPLACE secret123;
-- OK

ALTER USER user_b IDENTIFIED BY secret789;
-- OK, since user_b does not require old password when changing it

谢谢!

最佳答案

是的,这是从 Oracle 9i 开始支持的,当时引入了一个功能来检查新密码的复杂性,并可选择检查与旧密码的差异。由于 Oracle 仅存储散列值而不存储密码,因此它无法比较旧密码和新密码,除非用户在更改期间提供它。

因此,所有具有设置了 PASSWORD_VERIFY_FUNCTIONPROFILE 的用户都需要使用旧密码,即使此功能不检查任何密码也是如此:

CREATE OR REPLACE FUNCTION always_true (
username VARCHAR2,
password VARCHAR2,
old_password VARCHAR2) RETURN boolean IS
BEGIN
RETURN TRUE;
END always_true;
/

CREATE PROFILE always_true
LIMIT PASSWORD_VERIFY_FUNCTION always_true;

CREATE USER user_a IDENTIFIED BY secret123 PROFILE always_true;
GRANT CREATE SESSION to user_a;

现在 user_a 必须指定旧密码:

ALTER USER user_a IDENTIFIED BY secret123;
ORA-28221: REPLACE not specified

ALTER USER user_a IDENTIFIED BY secret456 REPLACE secret123;
User altered.

配置文件没有PASSWORD_VERIFY_FUNCTION 或此参数设置为NULL 的用户不必指定旧密码:

CREATE PROFILE without_function 
LIMIT PASSWORD_VERIFY_FUNCTION NULL;

CREATE USER user_b IDENTIFIED BY secret123 PROFILE without_function;
GRANT CREATE SESSION to user_b;

现在 user_b 可以在没有旧密码的情况下更改他/她的密码:

ALTER USER user_b IDENTIFIED BY secret789;
User altered.

第二个选项是拥有权限 ALTER USER,但这仅适用于管理员,因为他们可以更改所有帐户的所有密码。

关于database - 为 Oracle 中的特定用户设置新密码时需要旧密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50676642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com