使用Oracle SQL Developer更改密码


139

我的许多用户都不使用SQLPlus。我不能给他们更改用户。我们每60天使密码失效一次。

我无法在SQL Developer中使用SQLPlus命令“密码”。

  1. 当我点击运行时,我得到一个无效的命令错误
  2. 当我点击运行脚本时,什么也没有发生。

因为我们有很多数据库,所以我不想为他们写一个更改密码的软件包。我有更好的选择吗?


4
您无法通过SQL命令在SQL Developer中更改过期密码。JDBC堆栈不支持它。为此,您需要OCI库。如果已正确安装,SQL开发人员可以选择通过OCI堆栈重置密码和使密码过期。请参阅我的答案以获取全部详细信息。
Frobbit

您可以使用SQL Developer 4.1.0.17进行此操作。请参阅下面的答案。
模糊分析

Answers:


189

使用SQL Developer更新密码的正确语法是:

alter user user_name identified by new_password replace old_password ;

您可以在此处检查此命令的更多选项:ALTER USER-Oracle DOCS


29
另外,您可能需要将密码用双引号引起来,以转义密码中的任何特殊字符。例如, alter user __user_name__ identified by "newp@ss!!!" replace "oldp@ss!!!"有关更多信息,请访问asktom.oracle.com/pls/asktom/…–
Bryant Bowman

6
如果您的密码已过期,请登录以运行此功能。回答问题,但不回答问题。
本·乔治

105

在SQL工作表中:

  • 输入“密码”(不带引号)

  • 突出显示,点击CTRL+ ENTER

  • 出现密码更改屏幕。


4
您还可以执行“ password someusername”
Anna

3
我想您的意思是“运行语句”操作。默认的快捷方式似乎是Ctrl + Enter
阿尔瓦罗·冈萨雷斯

70

SQL Developer具有内置的重置密码选项,该选项可能适合您的情况。它也需要将Oracle Instant Client添加到工作站。当SQL Server启动时即时客户端位于路径中时,您将启用以下选项:

SQL Developer:下拉菜单显示重置密码选项

Oracle Instant Client不需要管理员权限即可安装,只需具有写入目录并将该目录添加到用户路径的功能即可。大多数用户都有执行此操作的特权。

概述:为了在Oracle SQL Developer上使用“重置密码”:

  1. 您必须将Oracle Instant Client解压到目录中
  2. 您必须将Oracle Instant Client目录添加到用户路径
  3. 然后必须重新启动Oracle SQL Developer

此时,您可以右键单击数据源并重设密码。

有关完整的演练,请参见http://www.thatjeffsmith.com/archive/2012/11/resetting-your-oracle-user-password-with-sql-developer/

另请参阅Oracle文档中的注释:http : //docs.oracle.com/cd/E35137_01/appdev.32/e35117/dialogs.htm#RPTUG41808

使SQL Developer(在4.0.1版上测试)可以识别并使用OS X上的Instant Client的另一种配置是:

  1. 在首选项->数据库->高级->使用Oracle客户端中将路径设置为Instant Client
  2. 使用首选项对话框中的Configure ...-> Test ...选项,验证Instance Client是否可以成功加载
  3. (OS X)请参考此问题来解决与DYLD_LIBRARY_PATH环境变量有关的问题。我使用以下命令,然后重新启动SQL Developer进行更改:

    $ launchctl setenv DYLD_LIBRARY_PATH / path / to / oracle / instantclient_11_2


1
并非适用于所有用户80(
Keng

嗯,似乎不适合我。我想知道在Mac上,更新PATH是否真的是您要做的全部。
fudo 2014年

我在家里使用Mac,但在Windows PC上工作。我们即将切换到macs。如果找到详细信息,我将发布它们。
Frobbit 2014年

1
Google非常有帮助:-)我发现它:oracle.com/technetwork/topics/linuxx86-64soft-092277.html可能会过时。要再次用谷歌搜索,请使用goo.gl/kU5ZdM
Frobbit 2014年

1
谢谢,它适用于Windows 7 64bit。我确实必须经过一个额外的步骤(与上面OS X配置中的第一步相同),否则“重置密码”选项将保持为灰色。4.在首选项->数据库->高级->使用Oracle客户端中设置Instant Client的路径
marciowerner

24

您的用户仍然可以通过“仅更改用户”(由newpassword标识的TheirUserName)来更改其密码。他们不必具有ALTER USER特权即可更改自己的密码。


16

根据管理员设置,您可能必须使用REPLACE选项指定旧密码。

alter user <username> identified by <newpassword> replace <oldpassword> 

新密码和旧密码可以相同吗?
哈里斯·默穆德

2
这个答案是错误的。newpassword和oldpassword会转置。使用stackoverflow.com/a/10809140/643483代替
阿伦Kurtzhals

1
@AaronKurtzhals您引用的答案与我的答案说的一样。在此处引用oracle文档:docs.oracle.com/cd/B19306_01/server.102/b14200/…–
Gerry Gurevich

要添加的主要内容(由@pgs在他对同一问题的回答中完成)是,如果密码包含特殊字符,则可能需要在密码周围加上引号。
Gerry Gurevich

10

为了更清楚一点:

如果用户名:abcdef,旧密码:a123b456,新密码:m987n654

更改由m987n654标识的用户abcdef替换a123b456


9

我意识到有很多答案,但是我找到了一个可能对某些人有用的解决方案。我遇到了同样的问题,我在本地计算机上运行oracle sql development,并且有很多用户。我碰巧记得一个用户的密码,并用它来重置其他用户的密码。

脚步:

  1. 使用有效的用户名和密码连接到数据库,在本例中,除“系统”外,我的所有用户均已过期,我记得该密码

  2. 在树中找到“ Other_users”节点,如下图所示

在此处输入图片说明

3.在“ Other_users”树中找到您要重置密码的用户,然后右键单击注释并选择“ Edit Users”

在此处输入图片说明

4.在“编辑用户”对话框中填写新密码,然后单击“应用”。确保您未选中“密码已过期(用户必须更改下一次登录名)”。

在此处输入图片说明

这对我有用,它不如其他解决方案好,因为您需要能够登录至少一个帐户,但它确实有效。


7

我确认这可以在SQL Developer 3.0.04中使用。我们的密码必须具有特殊字符,因此在本例中需要双​​引号字符串。当然,这仅在密码尚未过期且您当前已登录时才有效。

ALTER USER MYUSERID
IDENTIFIED BY "new#password"
REPLACE "old#password"

3
这个答案是错误的。newpassword和oldpassword会转置。使用stackoverflow.com/a/10809140/643483代替
阿伦Kurtzhals

3

如果(SQL Developer的)“重置密码”选项不起作用,请尝试以下解决方案:

步骤1:打开“运行SQL命令行”(从SQL Developer安装包随附的开始菜单中)

步骤2:运行以下命令:

在此处输入图片说明

注意:如果密码已经过期,则Changing password for <user>选项将自动出现。


2

内置的重置密码选项可能不适用于用户。在这种情况下,可以使用以下SQL语句重置密码:

ALTER user "user" identified by "NewPassword" replace "OldPassword";

1

您可以在DBA_USERS表中找到该用户,例如

SELECT profile
FROM dba_users
WHERE username = 'MacsP'

现在转到sys / system(管理员)并使用查询

ALTER USER PRATEEK
IDENTIFIED BY "new_password"
REPLACE "old_password"

要验证帐户状态,只需通过

SELECT * FROM DBA_USERS.

您可以看到您的用户状态。


1

现在,您可以在SQL Developer 4.1.0.17中执行此操作,不需要PL / SQL,前提是您拥有另一个具有管理特权的帐户:

  1. 使用替代管理用户在SQL Developer 4.1.0.17中创建与数据库的连接
  2. 连接后,展开“其他用户”部分,然后右键单击密码已过期的用户。选择“编辑用户”。
  3. 取消选中“密码已过期...”复选框,为用户输入新密码,然后单击“保存”。
  4. 任务完成!您可以通过与密码已过期的用户连接进行测试,以确认该密码现在再次有效。

1

还有另一种通过命令提示符重置密码的方法...

1)在开始菜单中转到Oracle数据库文件夹(在我的情况下为Oracle Database 11g Express Edition)。

2)在该文件夹中,单击 “运行SQL命令行”

Oracle数据库文件夹映像

3)输入连接的用户名/密码不带引号”(用户名和旧密码)

4)显示的消息是...

错误:ORA-28001:密码已过期

更改密码为hr

->新密码:

输入用户名,密码图像

5)输入新密码

6)重新输入新密码

7)显示的消息是...

密码已更改已连接。

SQL>

8)转到SQL开发人员->键入新密码->连接


在OP仍处于活动状态时,提出问题5年后,答案可能不再适用。
草莓

@Strawberry如果回答了问题,为什么不呢!
Muhammed Refaat

1

对于可能没有为sysdba或sys设置密码并经常使用第三方客户端的用户的注意事项。这是一些有关在没有帮助我的密码的情况下登录命令行sqlplus的信息。我正在使用fedora 21。

locate sqlplus

就我而言,sqlplus位于此处:

/u01/app/oracle/product/11.2.0/xe/config/scripts/sqlplus.sh

现在运行

cd /u01/app/oracle/product/11.2.0/xe/config/scripts
./sqlplus.sh / as sysdba

现在,您需要使用旧凭据连接到数据库。您可以在输出中找到Oracle提供的模板:

Use "connect username/password@XE" to connect to the database.

在我的情况下,我的用户“ oracle”的密码为“ oracle”,因此我的输入看起来像

connect oracle/oracle@XE

做完了 现在,输入两次新密码。然后,如果您不希望密码过期,则可以运行

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.