[PostgreSQL/error] error: no pg_hba.conf entry for host .. 에러 해결하기

dani·2025년 8월 19일

postgreSQL

목록 보기
1/2

💡당시 상황

  • NestJS
  • PostgreSQL
  • local server


    내 로컬 서버에서 다른 서버의 DB를 사용하려는 상황이었다. DB의 종류는 postgreSQL 이었다.


    해당 프로젝트의 DB 설정은 config.production.yaml 파일로 되어있었고 서버에 있는 설정 파일과 동일하게 DB설정을 했다. host, username, password, port 등 모든 설정을 동일하게 했는데도 로컬에서 서버를 실행해서 접속하려하면 DB 접속이 실패했다.



🚨에러

에러코드

error: no pg_hba.conf entry for host "172.30.11.111", user "abcd1234", database "database1", no encryption

문제원인

PostgreSQL서버의 접속 허용 정책 (pg_hba.conf) 때문에 막힌 상황이다. 설정을 알맞게 하더라도 pg_hba.conf 에 클라이언트(접속하려는 서버) 서버의 IP가 허용되지 않으면 연결할 수 없다고 한다.

postgreSQL을 사용하다보니 이 문제는 정말 자주 발생하는 문제였다.



🔍해결하기

1. 서버에 접속하여 설정파일 열기

DB를 띄우고 있는 Postgres가 설치된 서버로 접속하여 pg_hab.conf파일을 열어야한다.

보통 경로는 아래 두 곳에 있다고 한다.

  • /etc/postgresql/{버전}/main/pg_hba.conf (Debian/Ubuntu 계열)
  • /var/lib/pgsql/{버전}/data/pg_hba.conf (CentOS/RHEL 계열)

우분투 서버를 사용하고 있어서 첫 번쨰 경로에 있었다.


접속하기

cd etc/postgresql/{버전}/main

파일 열기

sudo nano pg_hba.conf

sudo로 열지 않으면 파일이 보이지 않을 수 있다.



2. 파일에 허용 규칙 추가하기

파일에 아래와 같은 명령어를 추가한다.

host    database1    abcd1234    172.30.11.111/32    md5

=> 172.30.1.122 이 IP에서 abcd1234 유저가 topcore DB 접속 가능하도록 허용


또는 데이터베이스, 유저를 지정하지 않고 아래와 같이 설정하면 모두 허용하도록 할 수 있다.

host    all    all    172.30.1.122/32    md5
  • all 로 설정하면 모든 DB, 모든 유저를 허용하겠다는 것이다.
  • md5는 패스워드 기반 암호화 인증 (보통 이걸 많이 쓴다고 한다.)

💡참고

  • trust : 비밀번호 없이 허용 → 위험 ⚠️
  • md5 : 패스워드 필요 (일반적으로 사용)
  • scram-sha-256 : PostgreSQL 10+에서 권장되는 더 안전한 방법
  • all all 0.0.0.0/0 → 모든 IP 허용, 보안상 권장되지 않음

3. PostgreSQL 서버 재시작

  • Ubuntu/Debian
sudo systemctl reload postgresql

- CentOS/RHEL ``` sudo systemctl reload postgresql-13 ```



⭐확인

다시 서버를 접속해보니 정상적으로 접속된다!
postgres를 사용하며 자주 만나는 문제여서 기억해두면 좋을 듯 하다.

profile
개발세포 이야기

0개의 댓글