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을 사용하다보니 이 문제는 정말 자주 발생하는 문제였다.
DB를 띄우고 있는 Postgres가 설치된 서버로 접속하여 pg_hab.conf파일을 열어야한다.
보통 경로는 아래 두 곳에 있다고 한다.
우분투 서버를 사용하고 있어서 첫 번쨰 경로에 있었다.
접속하기
cd etc/postgresql/{버전}/main
파일 열기
sudo nano pg_hba.conf
sudo로 열지 않으면 파일이 보이지 않을 수 있다.
파일에 아래와 같은 명령어를 추가한다.
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 허용, 보안상 권장되지 않음
sudo systemctl reload postgresql
다시 서버를 접속해보니 정상적으로 접속된다!
postgres를 사용하며 자주 만나는 문제여서 기억해두면 좋을 듯 하다.
