PSQL não pode entrar com a opção -h

1

Eu posso logar com o psql se eu não usar a opção -h e falhar com -h (nem localhost ou 127.0.0.1 funciona). Não sei o que está errado: (

Info: postgresql 10, Ubuntu 16.04 no Windows 10.

Este é o meu pg_hba.conf

local   all             postgres                                trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             192.168.1.0/24          trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

e meus logs do console

(meta--fVnbZtTA) root@Deathwing:/mnt/d/xx.us/meta-# psql -U meta -W
Password for user meta:
psql (10.2 (Ubuntu 10.2-1.pgdg16.04+1))
Type "help" for help.

meta=> \q
(meta--fVnbZtTA) root@Deathwing:/mnt/d/xx.us/meta-# psql -h 127.0.0.1 -U meta -W
Password for user meta:
psql: FATAL:  password authentication failed for user "meta"

(meta--fVnbZtTA) root@Deathwing:/mnt/d/xx.us/meta-# psql -h 127.0.0.1 -U meta
Password for user meta:
psql: FATAL:  password authentication failed for user "meta"
    
por deathemperor 26.02.2018 / 08:46

1 resposta

0

Esta invocação:

psql -h 127.0.0.1 -U meta

deve corresponder a esta linha em pg_hba.conf:

host    all             all             127.0.0.1/32            trust

porque as linhas são testadas na ordem do arquivo e param na primeira correspondência (uma correspondência está em TYPE+DATABASE+USERNAME+[CIDR unless TYPE=local] e essa combinação é a primeira correspondência para a invocação acima.

trust significa que nenhuma senha será solicitada pelo servidor, mas o que realmente acontece por sua pergunta é que uma senha é solicitada, portanto há uma contradição entre o que você obtém e seu pg_hba.conf

Talvez você não esteja editando pg_hba.conf no lugar certo. Desde a versão 10, o postgresql tem uma visão que reflete o conteúdo do arquivo, veja

link

% bl0ck_qu0te%

Você pode verificar com select * from pg_hba_file_rules order by line_number; se o conteúdo é o que você espera.

Também show hba_file , como outro comando SQL, relatará onde o servidor encontra esse arquivo.

Além disso, você precisa ler os logs do servidor para obter detalhes adicionais sobre falhas de autenticação ou falha ou sucesso para recarregar o arquivo pg_hba.conf.

No Ubuntu, os logs do servidor estão em /var/log/postgresql , a menos que seja configurado de outra forma em postgresql.conf

    
por Daniel Vérité 26.02.2018 / 17:54