Postgresql
為什麼無法重置 postgres 的密碼?
我可以在沒有密碼的情況下登錄 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