PostgreSQL 서버에 연결 : FATAL : 호스트에 대한 pg_hba.conf 항목이 없습니다.


178

안녕하세요, 저에게 보낸 웹 사이트를 실행하려고하는데 그렇게 한 후에이 오류가 나타납니다.

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

인터넷 검색 을 내가 그냥 특정 사용자에 대한있는 pg_hba.conf 파일에 항목을 추가 할 필요가 있다고 말한다. 이것은 내 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

그러나 그렇게 한 후에도 오류는 계속 발생합니다. XAMPP 서버를 여러 번 다시 시작했지만 변경 내용이 나타나지 않습니다. 미리 감사드립니다


웹 서버뿐만 아니라 PostgreSQL 자체를 다시 시작 했습니까? 시도하십시오 SELECT pg_reload_conf().
Craig Ringer

답변:


220

에 다음 줄을 추가하거나 편집하십시오 postgresql.conf.

listen_addresses = '*'

다음 줄을의 첫 줄로 추가하십시오 pg_hba.conf. 암호화 된 비밀번호로 모든 사용자의 모든 데이터베이스에 액세스 할 수 있습니다.

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

이것을 추가 service postgresql restart하거나 설정에 해당하는 명령을 추가 한 후 Postgresql을 다시 시작하십시오 .


5
이 작업을 수행 하려면 사용자에 대한 비밀번호가 설정되어 있어야합니다 . sudo -u <username> psql postgres그러면 \passwordsql 프롬프트에서 비밀번호 를 설정하라는 프롬프트가 표시됩니다.
ijoseph

2
이것을 추가 한 후에 postgresql을 다시 시작하는 것을 잊지 마십시오 : service postgresql restart
ammills01

개인 도메인 (예 : 인터넷 이외의 사무실이 아닌 사무실)에 대한 연결을 제한하는 약간의 추가 보안이 필요한 경우 네트워크와 일치하도록 첫 번째 숫자를 10, 172 또는 192로 변경할 수 있습니다 (예 : 172.0). 0.0.0.0/0 대신 0.0 / 0
Nate Wanner

22

이 솔루션은 IPv4 / IPv6에서 작동합니다

나노 /var/lib/pgsql/data/pg_hba.conf

마지막에 추가

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

그런 다음 postgresql 서비스를 다시 시작하십시오.

/etc/init.d/postgresql restart

12

내가 이것을 해결 한 방법은 다음과 같습니다.

다음과 같이 라인을 추가했습니다 pg_hba.conf:

hostnossl    all          all            0.0.0.0/0  trust        

그리고 이것은 다음 postgresql.conf과 같이 수정되었습니다 .

listen_addresses = '*'  

실제 인스턴스 환경에서 SSL없이 연결하고 싶지 않은 POC (개념 증명) 인 경우, 이 인스턴스 는 Azure 의 VM에서 Centos 7.3Postgres 9.5 에서 실행됩니다 .

인스턴스에 연결하기 위해 macOS Sierra 에서 pgAdmin 4 를 사용했습니다 .


4
개념 증명이 아니며 네트워크가 가능한 모든 것에서 SSL뿐만 아니라 연결을 신뢰할 수 없으며 인증 이 필요 합니다 .
joanolo

5

Fresh Postgres 9.5 설치, 우분투.

psql은 도메인 소켓 연결을 사용하기 때문에 키는 로컬 연결 유형 이었습니다 .

pg_hba.conf

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

3

SSH 터널을 사용하여 로컬 데이터베이스에 연결하려고 할 때 동일한 오류가 발생했습니다. 호스트 이름을에서 (으) localhost로 변경하여 해결했습니다 127.0.0.1.


3
  1. 아래에 다음 줄을 추가하십시오 pg_hba.conf.

    hostnossl all all 0.0.0.0/0 md5

  2. 라인을 추가 / 수정하십시오 postgresql.conf:

    listen_addresses = '*'

  3. 연결중인 사용자에게 비밀번호가 있는지 확인하십시오 (예 : connect user named postgres).

    에이. 사용자 계정으로 다음 psql명령을 실행하십시오 postgres.

    sudo -u postgres psql postgres

    비. 비밀번호를 설정하십시오.

    # \password postgres

여기에 이미지 설명을 입력하십시오


1
원격 연결에 신뢰를 사용하지 마십시오
eckes

2

올바른 구성 파일을 찾으십시오.

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

파일 끝에 다음을 추가하십시오.

local all all peer

그런 다음 PostgreSQL 응용 프로그램을 다시 시작하십시오.

/bin/systemctl restart postgresql*.service

1

내 경우에는 오류 정보에서 제안한대로 정확한 줄을 추가해야했습니다. 모든 IP를 가진 "모든"사용자를 규칙으로 추가하여이를 우회 할 수 없습니다. 이제는 다음과 같습니다

CentOS 7의 PosgreSQL 10.5

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

1

아래는 나를 위해 일했습니다 : (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

믿음

무조건 연결을 허용하십시오. 이 방법을 사용하면 PostgreSQL 데이터베이스 서버에 연결할 수있는 모든 사용자가 비밀번호 나 다른 인증 없이도 원하는 PostgreSQL 사용자로 로그인 할 수 있습니다.

md5

클라이언트가 인증을 위해 MD5 해시 이중 암호를 제공해야합니다.

자세한 내용은 여기 를 참조 하십시오


0

데비안 사용자를위한 지침.

posgres 사용자로 로그인하십시오 :

$ sudo su - postgres

데이터베이스를 쿼리하여 pg_hba.conf의 위치를 ​​찾으십시오.

$ psql -c "SHOW hba_file;"

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

pg_hba.conf를여십시오 :

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

"여기에 실제 구성을 입력하십시오"라는 구성을 추가하십시오.

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

사용자에게 로그 아웃하십시오.

$ exit
logout

변경 사항을 적용하려면 postgres 서버를 다시 시작하십시오.

$ sudo systemctl restart postgresql

-1

아래 구성 만 추가하면 효과가 있습니다.

# 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


-4

구성 파일에 다음 순서를 작성하십시오.

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

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

이게 다야. 파일 db-config에는 호스트, 사용자, 비밀번호 및 데이터베이스의 사양 데이터가 포함됩니다. 이 작은 변경으로 로컬 및 패스 서비스 (Heroku) 모두에서 완벽하게 작동합니다. 완전히 테스트되었습니다.


이것은 db-config무엇입니까? XAMPP 구성 파일입니까?
ypercubeᵀᴹ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.