Eu posso fazer login no banco de dados postgresql sem senha:
sudo -u postgres psql
Agora eu quero redefinir a senha 'xxxxxxxx' para postgres:
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
Agora reinicie o postgresql:
sudo systemctl restart postgresql
issu1: não é possível fazer login no postgres com xxxxxxxx
:
psql -d postgres -U postgres -W
Password:
psql: error: FATAL: Peer authentication failed for user "postgres"
issu2: por que ainda pode fazer login no postgres com o usuário postgres sem senha?
sudo -u postgres psql
Seu arquivo pg_hba.conf tem uma regra que determina que, quando uma conexão local é tentada com o
postgres
usuário do banco de dados, ela passa se o usuário local do sistema operacionalpostgres
também estiver. Esse é opeer
método de autenticação. Com este método, a senha não é solicitada e ignorada se você a fornecer de qualquer maneira (-W
opção).Isso explica os problemas #1 e #2.
A solução é configurar
pg_hba.conf
. Substituir opeer
método pormd5
ouscram-sha-256
(se você estiver em uma versão recente do Postgres) exigiria uma senha mesmo para conexões locais, o que parece ser o que você deseja.