Oracle:用户可以更改自己的过期密码吗?

Posted

技术标签:

【中文标题】Oracle:用户可以更改自己的过期密码吗?【英文标题】:Oracle : Can a User change his own expired password? 【发布时间】:2019-01-09 14:26:35 【问题描述】:

我有一个 .Net 应用程序。应用程序用户是数据库用户。

当数据库用户密码过期时,用户无法连接到应用程序(这是正常的)。

目前,当这种情况发生时,DBA 会重置密码:

ALTER USER user_name IDENTIFIED BY new_password;

有没有什么方法可以让用户在不询问 DBA 的情况下更改他的密码?知道应用程序使用 OracleDataAccess 库进行连接,如果密码过期,则不会建立连接。

谢谢, 干杯

【问题讨论】:

这是可能的,但我相信这是用户界面的一个特性。例如,SQL*Plus 允许用户在第一次用户在密码过期后尝试登录时更改她的密码。 【参考方案1】:

我得到了解决方案:OpenWithNewPassword

来源:Oracle

    Dim con As OracleConnection = New OracleConnection()

Try
    con.ConnectionString = "User Id=testexpire;Password=testexpire;Data Source=oracle"
    con.Open()
    Console.WriteLine("Connected to Oracle" & con.ServerVersion)
Catch ex As OracleException
    Console.WriteLine(ex.Message)

    If ex.Number = 28001 Then
        Console.WriteLine(vbLf & "Changing password to panther")
        con.OpenWithNewPassword("panther")
        Console.WriteLine("Connected with new password.")
    End If

Finally
    con.Close()
    con.Dispose()
    Console.WriteLine("Disconnected")
End Try

【讨论】:

【参考方案2】:

这是可能的,但是他们需要使用的方法会因用户在数据库中的权限以及他们有权访问的软件而异。

如果用户系统上安装了 Oracle 客户端,则他们拥有 SQL*Plus。使用 SQL*Plus(或 SQL DeveloperToad 之类的应用程序),他们可以连接到数据库并执行以下两项操作之一:

    发出与 DBA 在 SQL*Plus 提示符下使用的相同的 ALTER USER user_name IDENTIFIED BY new_password; 命令(假设权限未被撤销。) 从 SQL*Plus 提示符发出 password 命令。

如果由于某种原因他们无法使用 SQL*Plus 并且无法访问其他数据库管理软件,您始终可以构建一些自定义的东西,允许他们通过其他方式对其进行更改。这篇 AskTom 文章有一些可以帮助您入门的想法:https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:6589437900346618270

【讨论】:

实际上,我正在寻找可以通过 Oracle DataAccess 库从我的应用程序中使用的东西 :) !你想象如果你的 Messenger 应用程序密码过期并要求你打开一个黑屏 SQL Plus 来更改密码?您的应用程序将如何显示:)? 知道了!不幸的是,是的 - 我帮助支持许多旧版应用程序,因此只需打开命令提示符并启动 SQL*Plus 会话将是一个可喜的变化:/ 尽管如此,很高兴你找到了一个更适合你的解决方案!跨度>

以上是关于Oracle:用户可以更改自己的过期密码吗?的主要内容,如果未能解决你的问题,请参考以下文章

配置oracle 的本地服务器 更改不了默认的用户名和密码scott、tiger 更改就出错

新手,oracle安装,用户名和口令无效怎么办

Oracle密码过期 怎么修改

Oracle密码过期 怎么修改

如何修改Linux密码过期问题

linux如何设置一般用户密码必须达到一定强度?还有3月强制更改一次密码?