一、前言
系统:windows系统 64位
Postgresql 版本:Postgresql 14
今天想测试一个PostgresSQL语法的 SQL,但是打开PostgresSQL之后沉默了。密码是什么?
想来当初知识安装随便玩一下,也没有太留意记一下密码,结果日长月久的,渐渐就忘记了,于是开始了寻找密码的道路。一开始想着用pgAdmin重置,但似乎没有这样的按钮。上网找一找,发现还是有办法的,网友给力!
二、重置密码过程
2.1 修改配置文件
由于版本有一些差异,找到的教程中,pg_dba.conf
文件的配置和我的文件配置也有所不同。教程配置文件如下:
# 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 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
我的配置文件如下:
# TYPE DATABASE USER ADDRESS METHOD# "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
虽然配置文件不一样,但是处理方式大同小异,就是把相关的验证方式改为trust
,改完之后就是免密登录的方式。
如果想了解具体是哪一个会生效,可以逐一测试,如果不想一个个测试,可以将全部都改为trust
,后面修改完密码之后再改回来就可以了,为了安全起见,记得要改回来哦!(可以考虑备份,改完后直接替换)
2.2 重启windows服务
改完配置文件之后,可以使用调出服务,重启PostgreSQL Server
服务。重启服务有几种方法:
方法一:用快捷键win+R
,输入services.msc
,回车或确定,然后会弹出系统服务界面,找到PostgreSQL Server
服务,点击重启动即可。
方法二:如果你知道你的PostgreSQL Server
服务的名称,也可以通过以下命令net
关闭和打开服务
net stop <your PostgreSQL Server name>
net start <your PostgreSQL Server name>
2.3 登录并重置密码
打开命令行,依次输入以下命令。注意修改密码的引号内填入自己新的密码。
psql -U postgres -- 登录
ALTER USER postgres WITH PASSWORD '<your new password>'; -- 修改密码
修改好了,后面我就可以通过123456
登录账户postgres
了。
2.4 恢复配置文件
将刚刚修改的改回去。
将刚刚修改的改回去。
将刚刚修改的改回去。
另外,补充一点,配置文件刚刚修改的内容,其实都是登录数据库的方式。除了免密登录的trust
,常用的两种就是:md5
和scram-sha-256
。
md5
使用不太安全的质询-响应机制,它可以防止密码嗅探并避免以纯文本形式将密码存储在服务器上,但如果攻击者设法从服务器窃取密码哈希,则无法提供任何保护。此外,MD5 散列算法现在不再被认为可以抵御确定的攻击。但是,md5
是目前使用较广泛的方法。
scram-sha-256
也是一种质询-响应方案,可防止在不受信任的连接上嗅探密码,并支持以被认为是安全的加密散列形式将密码存储在服务器上。scram-sha-256
是当前提供的方法中最安全的,但旧客户端库不支持它。
参考:
如何重置pgsql的密码