Oracle 密码更改,REPLACE 被忽略

问题描述 投票:0回答:1

我正在运行 Oracle 19c,在我的应用程序服务器代码中,我从用户接收旧/新密码,并构建更改用户查询(包括 REPLACE 子句)并执行它。即使旧密码不正确,似乎总是让他们更改密码。

当我从 TOAD 手动执行查询时也是如此。换句话说,下面将把他们的密码更改为“bar”。我原以为第二条语句会失败,因为他们的密码是“food”,而不是“bad_password”

ALTER USER myuser IDENTIFIED BY "foo";

ALTER USER myuser IDENTIFIED BY "bar" REPLACE "bad_password";

我尝试过搜索,但我发现很难以一种能得到有用结果的方式表达问题。

我错过了什么完全明显的事情?

sql oracle plsql toad
1个回答
0
投票

来自文档

如果您要设置自己的密码或者您具有 ALTER USER 系统权限并且要更改其他用户的密码,则可以省略 REPLACE 子句。但是,除非您具有 ALTER USER 系统权限,否则如果已启用密码复杂性验证功能,则必须始终指定 REPLACE 子句,方法是运行 UTLPWDMG.SQL 脚本或在配置文件的 PASSWORD_VERIFY_FUNCTION 参数中指定此类函数:已分配给用户。

更符合您的情况:

Oracle 数据库不会检查旧密码,即使您在 REPLACE 子句中提供旧密码,除非您要更改自己的现有密码。

由于您的应用程序(可能还包括 Toad)以不同用户身份连接,因此

myuser
不会更改自己的密码,因此
REPLACE
会被忽略。

© www.soinside.com 2019 - 2024. All rights reserved.