我可以在没有密码的情况下登录 postgresql 数据库:
sudo -u postgres psql
现在我想为 postgres 重置密码“xxxxxxxx”:
sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD 'xxxxxxxx';
ALTER ROLE
postgres=# \q
sudo passwd -d postgres
passwd: password expiry information changed.
sudo -u postgres passwd
New password:
Retype new password:
passwd: password updated successfully
现在重新启动 postgresql:
sudo systemctl restart postgresql
issu1:无法使用以下命令登录 postgres xxxxxxxx
:
psql -d postgres -U postgres -W
Password:
psql: error: FATAL: Peer authentication failed for user "postgres"
issu2: 为什么不用密码的用户 postgres 仍然可以登录 postgres?
sudo -u postgres psql
您的pg_hba.conf文件有一条规则,规定当尝试与
postgres
数据库用户建立本地连接时,如果本地操作系统用户也这样做,它就会通过postgres
。那就是peer
认证方法。使用此方法,不会要求输入密码,并且如果您仍然提供密码(-W
选项),则会忽略密码。这解释了问题#1 和#2。
解决方案是配置
pg_hba.conf
. 用or替换该peer
方法(如果您使用的是最新的 Postgres 版本)即使对于本地连接也需要密码,这似乎是您想要的。md5
scram-sha-256