如果您在将 Windows 11 升级、还原、备份 PostgreSQL 数据库之后无法登录,可能需要重置 PostgreSQL 用户密码。下面是重置 PostgreSQL 密码的步骤:
打开命令提示符或 PowerShell 窗口(以管理员身份运行)。
进入 PostgreSQL 安装的 bin 目录。例如,如果 PostgreSQL 安装在 C:\Program Files\PostgreSQL\13 目录中,则在命令提示符或 PowerShell 中运行以下命令:
cd "C:\Program Files\PostgreSQL\13\bin"
以管理员身份运行以下命令,停止 PostgreSQL 服务:
pg_ctl stop -D "C:\Program Files\PostgreSQL\13\data"
以管理员身份运行以下命令,打开 pg_hba.conf 文件:
notepad "C:\Program Files\PostgreSQL\13\data\pg_hba.conf"
注意:如果您使用的是 PowerShell,请将“notepad”替换为“Start-Process”命令,因为在 PowerShell 窗口中无法直接打开文本编辑器。
将文件中的所有内容复制到文本编辑器中,并将“method”列中每个用户的值改为“trust”,如下所示:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust # Allow replication connections from localhost, by a user with the # replication privilege. local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust
请注意,这将允许任何人在不需要密码的情况下登录到 PostgreSQL。
保存并关闭文本编辑器。
以管理员身份运行以下命令,启动 PostgreSQL 服务:
pg_ctl start -D "C:\Program Files\PostgreSQL\13\data"
以管理员身份运行以下命令,登录到 PostgreSQL:
psql -U postgres
注意:如果您使用的是 PowerShell,则需要在登录命令之前使用“-noexit”选项,以便在退出 psql 时窗口不会关闭:
Start-Process -FilePath "C:\Program Files\PostgreSQL\13\bin\psql.exe" -ArgumentList "-U postgres" -NoExit
在 psql 提示符下,输入以下命令以更改密码:
ALTER USER yourusername WITH PASSWORD 'newpassword';
其中“yourusername”是要更改密码的用户名,“newpassword”是新密码。
退出 psql:
\q
以管理员身份运行以下命令,打开 pg_hba.conf 文件:
notepad "C:\Program Files\PostgreSQL\13\data\pg_hba.conf"
恢复 pg_hba.conf 文件并重新打开密码认证。
以管理员身份运行以下命令,重新启动 PostgreSQL:
```
pg_ctl restart -D "C:\Program Files\PostgreSQL\13\data"
```
完成上述步骤后,应该可以使用新密码登录到 PostgreSQL。