PostgreSQL 教程: 重置 postgres 用户忘记的密码

九月 19, 2023

摘要:在本教程中,我们将逐步向您展示如何在 PostgreSQL 中重置postgres用户的密码。

由于某些原因,安装 PostgreSQL 后,您可能会忘记postgres用户的密码。在这种情况下,您需要知道如何重置密码来访问 PostgreSQL 服务器。

PostgreSQL 使用存储在数据库数据目录(例如,在 Windows 上的目录C:\Program Files\PostgreSQL\12\data)中的pg_hba.conf配置文件来控制客户端身份验证。pg_hba.conf中的hba表示基于主机的身份验证(host-based authentication)。

如果要重置postgres用户的密码,需要修改该配置文件中的一些参数,以postgres无密码方式登录,然后重置密码。

以下步骤向您展示如何重置postgres用户的密码:

步骤 1 通过将pg_hba.conf文件复制到其他位置或将其重命名为pg_hba.conf.bk来备份文件。

步骤 2 编辑pg_hba.conf文件并将所有本地连接从md5(或较新版本中的scram-sha-256)更改为trust。这样,您就可以无需密码登录 PostgreSQL 数据库服务器。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# 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.
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

步骤 3 重新启动 PostgreSQL 服务器。如果您使用的是 Windows,您可以从服务重新启动 PostgreSQL:

img

或者从窗口终端运行以下命令:

pg_ctl -D "C:\Program Files\PostgreSQL\12\data" restart

其中"C:\Program Files\PostgreSQL\12\data"是数据目录。

步骤 4 使用任何工具(例如 psql 或 pgAdmin)连接到 PostgreSQL 数据库服务器:

psql -U postgres

PostgreSQL 不需要密码即可登录。

步骤 5 执行以下命令为postgres用户设置新密码。

postgres=# ALTER USER postgres WITH PASSWORD 'new_password';

步骤 6 恢复pg_hba.conf文件,重新启动 PostgreSQL 数据库服务器,并使用新密码连接到 PostgreSQL 数据库服务器。

在本教程中,您学习了如何重置postgres用户的密码。