前言

这几天 Kevin 在完成大学 FSAD 课程的第二项大作业。学校使用的是 PostgreSQL 数据库, 但是因为实在是太久了,我忘记了密码。但是因为没有密码我就不可以完成数据库作业,而我又 嫌重装时间太长,所以决定修改!

思路

通过暴力破解密码的可能是一个很简单的方法,但是它不具备可行性。而我的核心思路就是通过 本地网络信任身份后再次破解密码。

过程

本文假设了用户名为 postgres

修改鉴权

打开 pg_hba.conf 文件,其通常在 /etc/postgresql/<version>/main/pg_hba.conf (如果是 Linux) 或者 C:\Program Files\PostgreSQL\<version>\data\pg_hba.conf (如果是 Windows)。

其中核心段落为

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

为了避免密码授权,我们可以增添以下行(别忘了备份!):

1
2
host	all				postgres		127.0.0.1/32			trust
host	all				postgres		::1/128				trust

信任内网情况的鉴权。

修改密码

使用终端键入如下指令

1
psql -h localhost -U postgres

PostgreSQL 不会请求密码,而是会直接登录进系统。执行如下 SQL 指令以修改密码:

1
2
ALTER USER postgres PASSWORD '123456'; -- 123456 是你想要的密码
\q

如果你成功到达此步,那说明你已经完成修改密码的核心步骤。

恢复文件

重新修改 pg_hba.conf 为原始状态。

结语

密码最终修改完毕,可以正常工作了!么的总结!