conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

178

Olá, estou tentando executar um site enviado para mim, mas depois disso, esse erro apareceu

connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "4X.XXX.XX.XXX", user "userXXX", database "dbXXX", SSL off in C:\xampp\htdocs\xmastool\index.php on line 37

depois de pesquisar no Google , ele diz que eu só preciso adicionar uma entrada no arquivo pg_hba.conf para esse usuário específico. este é o meu arquivo pg_hba.conf.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
local dbXXX userXXX md5
host    dbXXX  userXXX  XX.XXX.XXX.XXX           md5
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

mas depois de fazer isso, o erro ainda persiste. Eu reiniciei meu servidor XAMPP várias vezes, mas nenhuma alteração aparece. desde já, obrigado

Jin
fonte
Você reiniciou o PostgreSQL sozinho, não apenas o servidor da web? Tente SELECT pg_reload_conf().
Craig Ringer

Respostas:

220

Adicione ou edite a seguinte linha no seu postgresql.conf:

listen_addresses = '*'

Adicione a seguinte linha como a primeira linha de pg_hba.conf. Permite acesso a todos os bancos de dados para todos os usuários com uma senha criptografada:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

Reinicie o Postgresql depois de adicioná-lo com service postgresql restartou com o comando equivalente para sua instalação.

Jérôme Radix
fonte
5
Observe que, para que isso funcione, uma senha deve ter sido definida para o usuário : e sudo -u <username> psql postgres, \passwordno prompt sql resultante, será solicitada a configuração de uma.
ijoseph
2
Não se esqueça de reiniciar o PostgreSQL depois de adicionar este: serviço postgresql restart
ammills01
Se você deseja um pouco de segurança extra para limitar as conexões com domínios privados (como dentro de um escritório e não o resto da Internet), você pode alterar o primeiro número para 10, 172 ou 192 para corresponder à sua rede: por exemplo, 172.0. 0.0 / 0 em vez de 0.0.0.0/0
Nate Wanner
22

Esta solução funciona para IPv4 / IPv6

nano /var/lib/pgsql/data/pg_hba.conf

adicionar na final

host all all      ::1/128      md5
host all postgres 127.0.0.1/32 md5

e, em seguida, reinicie o serviço postgresql

/etc/init.d/postgresql restart
Jose Nobile
fonte
12

A maneira como resolvi isso foi:

Adicionada a linha como abaixo em pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

e isso foi modificado em postgresql.conf, como mostrado:

listen_addresses = '*'  

Eu tinha essa instância em execução no Centos 7.3 e no Postgres 9.5 em uma VM no Azure , já que esse era um POC (prova de conceito) que você não deseja conectar sem SSL no ambiente de produção real.

Para conectar-me à instância, eu estava usando o pgAdmin 4 no macOS Sierra .

Roberto Lopez
fonte
4
Não apenas SSL ... em qualquer coisa que não seja uma prova de conceito e seja acessível à rede, você não confiaria em conexões, exigiria alguma autenticação .
Joanolo 5/06
5

Instalação do Fresh Postgres 9.5, Ubuntu.

A chave era o tipo de conexão local , pois o psql usa conexão de soquete de domínio.

pg_hba.conf

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
local all all md5
host  all  all 0.0.0.0/0 md5
willianpts
fonte
3

Eu tive o mesmo erro quando tentei me conectar a um banco de dados local usando um túnel SSH. Eu o resolvi alterando o nome do host de localhostpara 127.0.0.1.

Finesse
fonte
3
  1. Adicione a seguinte linha na parte inferior de pg_hba.conf:

    hostnossl all all 0.0.0.0/0 md5

  2. Adicione / modifique a linha em postgresql.conf:

    listen_addresses = '*'

  3. Verifique se o usuário que está se conectando possui uma senha: (Exemplo de usuário de conexão chamado postgres)

    uma. Execute o seguinte psqlcomando com a postgresconta do usuário:

    sudo -u postgres psql postgres

    b. Defina a senha:

    # \password postgres

insira a descrição da imagem aqui

nguyên
fonte
1
Não use confiança para conexões remotas
eckes
2

Encontre o arquivo de configuração correto:

su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"

Adicione o seguinte no final do arquivo:

local all all peer

Em seguida, reinicie seu aplicativo PostgreSQL:

/bin/systemctl restart postgresql*.service
Feriman
fonte
1

No meu caso, tive que adicionar a linha exata, conforme sugerido pelas informações de erro. Não é possível ignorá-lo adicionando "todos" usuários com todos os IPs como regra. Agora é como:

PosgreSQL 10.5 no CentOS 7.

# IPv4 local connections:
host    all             all             127.0.0.1/32                    md5
host    <db_name>       postgres        <my_client_machine_ip>/32       md5
WesternGun
fonte
1

Isso abaixo funcionou para mim: (pg_hba.conf)

# 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             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
host    all             all             0.0.0.0/0               trust

Confiar em

Permita a conexão incondicionalmente. Este método permite que qualquer pessoa que possa se conectar ao servidor de banco de dados PostgreSQL faça o login como qualquer usuário do PostgreSQL que desejar, sem a necessidade de uma senha ou qualquer outra autenticação.

md5

Exija que o cliente forneça uma senha com hash MD5 duplo para autenticação.

consulte mais aqui

Ravistm
fonte
0

Instruções para usuários do Debian.

Faça login como usuário posgres:

$ sudo su - postgres

Obtenha a localização do pg_hba.conf consultando o banco de dados:

$ psql -c "SHOW hba_file;"

              hba_file               
-------------------------------------
/etc/postgresql/11/main/pg_hba.conf
(1 row)

Abra o arquivo pg_hba.conf:

nano /etc/postgresql/11/main/pg_hba.conf

Adicione a configuração onde diz "Coloque aqui sua configuração atual":

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

Saia do seu usuário:

$ exit
logout

Reinicie o servidor postgres para que as alterações entrem em vigor:

$ sudo systemctl restart postgresql
Eugene Kulabuhov
fonte
-1

Funciona para mim apenas adicionando a configuração abaixo:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
host    all             all             0.0.0.0/0               md5
navjyot verma
fonte
-4

Basta escrever a seguinte sequência no arquivo de configuração:

const 
  pg                = require('pg'),
config          = require('./db-config'),
    dbOption    = {
      host    : ,
      port    : ,
      user    : ,
      password  :,
      database  : 
    },

  pool          = new pg.Pool(dbOption)
  pg.defaults.ssl = true;

Isso é tudo. O arquivo db-configcontém os dados de especificação do host, usuário, senha e banco de dados. Com essa pequena alteração, ele funciona perfeitamente localmente e em um serviço de passe (Heroku). Totalmente testado.

Jose Arredondo
fonte
O que (e onde) é isso db-config? É um arquivo de configuração do XAMPP?
ypercubeᵀᴹ