忘记的PostgreSQL Windows密码


31

今天早上,我一直在尝试在Windows 7 Professional桌面上连接PostgreSQL数据库。

默认值为“ postgres”,但可以肯定的是,我忘记了最初安装该密码时使用的密码。

我已经在Google上搜索了,发现了与重置密码有关的帖子。我遵循了这些步骤,但是最终结果与文章中提到的有所不同。我用了-

net user postgres postgres

重置数据库密码,但没有显示成功消息,而是:

“发生了系统错误5。访问被拒绝。”

系统错误。如何避免此错误并重置密码?

Answers:


33

(注意:这与从EDB安装程序中使用PostgreSQL 9.2或更高版本的读者没有太大关系,尽管现在您仍可以配置其他帐户,但这些安装程序使用可以大大简化了使用的默认安装NETWORK SERVICE


我曾经net user postgres postgres 重置过数据库的密码,但是我收到的不是成功消息"System error 5 has occurred. Access is denied."

您已重置(或尝试重置)服务帐户密码。出于安全性考虑,PostgreSQL将无法以管理员身份运行,并且安装程序通常在PostgreSQL 9.1及更低版本1中使用“ postgres”用户帐户对其进行设置。在Windows上,如果不将用户的密码保存在注册表中,则无法以用户身份启动服务,这就是安装程序的工作。

如果您更改Windows用户帐户的密码postgres,则PostgreSQL服务将无法启动。因此,请勿这样做,您必须修复服务配置以存储更新的密码。

值得庆幸的是,我认为另一个错误使您无法这样做。看起来您可能在没有特权的Windows用户帐户或具有UAC的计算机上运行命令提示符而未使用“以管理员身份运行”,因此它没有以更改postgres用户密码所需的访问权限运行。

在尝试更改该密码之前,请确保它确实是您想要的。您要在这里解决什么问题?您是否要安装数据库更新或要求postgresWindows用户输入密码的其他工具?

您很可能只是尝试登录数据库。为此,您使用存储在数据库自身中的(不幸的是完全不相关)密码。由于您丢失/忘记了它,因此必须将其重置:

  • 找到您的pg_hba.conf,通常在C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • 如有必要,请对其设置权限,以便您可以对其进行修改。您的用户帐户可能无法执行此操作,直到您使用属性对话框中的“安全性”选项卡通过使用管理员替代来赋予自己该权利。或者,在开始菜单中找到notepad / notepad ++,右键单击,选择“以管理员身份运行”,然后使用File-> Open打开pg_hba.conf该方式。
  • 编辑它以将主机“ 127.0.0.1/32”上的用户“ postgres”的“主机”行设置为“信任”。您可以添加该行(如果没有);只需插入:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use

    任何其他行之前。(您可以忽略注释,以开头的行#)。

  • 从服务控制面板重新启动PostgreSQL服务(开始->运行-> services.msc

  • 使用psql或PgAdmin-III或任何您喜欢的连接
  • ALTER USER postgres PASSWORD 'postgres'
  • 删除添加pg_hba.conf或更改的行
  • 再次重启PostgreSQL。

请参阅:如何在Windows上为PostgreSQL重置postgres密码?


1. 9.2现在使用了NETWORKSERVICE不需要密码的帐户,因此该问题消失了


8
您可能还需要一个ip6条目:“托管所有postgres :: 1/128信任”
Ted Elliott 2014年

仍然让我在开发机上使用postreSQL 9.6时没有麻烦。不确定为什么人们认为它没有帮助> 9.2
巡回演出

@darwindave取决于您的安装。如果您安装使用该NETWORKSERVICE用户帐户,则没有服务帐户密码。如果您安装为使用专用服务帐户(例如postgres或域帐户),则可以提供帮助。
克雷格·林格

您能否在9.2+上更新此答案,同时显示Windows的两种方法?
埃文·卡罗尔

1
@EvanCarroll如果您使用NETWORK SERVICE的是没有密码来重置。如果您使用其他帐户在9.2+上安装,则适用相同的信息。重置postgres超级用户数据库帐户密码的部分没有任何变化。因此,实际上并不需要任何更改。
Craig Ringer

3

您需要区分名为“ postgres”的系统(Windows)用户和具有相同名称的数据库用户。

找到您的pg_hba.conf文件-这控制对PostgreSQL服务器的访问。您将需要以具有管理员权限的用户身份对其进行编辑。查找提到用户“ postgres”的行,并将模式临时设置为“ trust”。重新启动postgresql,然后您无需密码即可连接。重置密码,然后将文件恢复为原始设置并重新启动PostgreSQL。

该手册详细介绍了身份验证方法pg_hba.conf文件。


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.