忘记 PostgreSQL Windows 密码

AKI*_*WEB 38 postgresql authentication windows password-recovery postgresql-9.1

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

默认值是“postgres”,但果然我忘记了最初安装时使用的密码。

我用谷歌搜索并找到了一篇与重置密码相关的帖子。我按照步骤操作,但最终结果与帖子中提到的有点不同。我用了-

net user postgres postgres
Run Code Online (Sandbox Code Playgroud)

为我的数据库重置密码,但我收到的不是成功消息:

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

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

Cra*_*ger 42

(注:没有太多的,这是有关使用PostgreSQL 9.2或更高版本从EDB安装阅读器,它现在有一个大大简化了默认安装使用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
  • 如有必要,对其设置权限,以便您可以对其进行修改;您的用户帐户可能无法执行此操作,除非您使用属性对话框中的安全选项卡通过使用管理员覆盖为自己赋予该权限。或者,在开始菜单中找到记事本/记事本++,右键单击,选择“以管理员身份运行”,然后使用文件->打开以pg_hba.conf这种方式打开。
  • 编辑它以将主机“127.0.0.1/32”上用户“postgres”的“host”行设置为“trust”。如果它不存在,您可以添加该行;只需插入:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

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


1. 9.2现在使用NETWORKSERVICE账号,不需要密码,这个问题就解决了

  • 您可能还需要一个 ip6 条目:“host all postgres ::1/128 trust” (9认同)