본문 바로가기
Database

Windows PostgreSQL서버 외부에서 접속 허용하기

by 주리니e 2022. 7. 27.
728x90

 Windows PostgreSQL서버 외부에서 접속 허용하기

 

PostgreSQL서버는 기본적으로 로컬호스트에서는 설정파일의 변경 없이 접근이 가능하다. 그러나 외부에서의 접근은 허용하지 않는데 외부에서 접근을 하려고 하면 아래와 같은 오류를 맞이한다.

An error has occured:
Error connecting to the server: 치명적오류: 호스트 "server ip" 사용자 "사용자 명", 데이터베이스 
"데이터베이스 명", no encryption 연결에 대한 설정이 pg_hba.conf파일에 없습니다.


Ä¡¸íÀû¿À·ù: È£½ºÆ® "server ip", »ç¿ëÀÚ "username", µ¥ÀÌÅͺ£À̽º "db name", no encryption ¿¬°á¿¡ ´ëÇÑ ¼³Á¤ÀÌ pg_hba.conf ÆÄÀÏ¿¡ ¾ø½À´Ï´Ù.
(pgjdbc: autodetected server-encoding to be ISO-8859-1, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf)

설정파일을 수정하여 외부에서 PostgreSQL의 접근을 허용해보자. PostgreSQL 설치 디렉토리에서 data 디렉토리에서 설정파일을 찾을 수 있다.

# 각 위치는 설치 시 지정했던 디렉토리마다 다르니 유의한다.
C:\Program Files\PostgreSQL\14\data

크게 두가지의 설정파일이 존재하며 postgresql.conf는 PostgreSQL의 전반적인 구성 설정 내용들이 있으며,  pg_hba.conf는 접근 인증을 설정하는 파일이다. 외부에서의 접근을 가능하도록 하려면 pg_hba.conf 파일만 수정하면 된다.

 

  • postgresql.conf
# -----------------------------
# PostgreSQL configuration file
# -----------------------------

...

# - Connection Settings -

listen_addresses = '*'		# what IP address(es) to listen on;
					# comma-separated list of addresses;
					# defaults to 'localhost'; use '*' for all
					# (change requires restart)
port = 5432				# (change requires restart)
max_connections = 100			# (change requires restart)


# - Security and Authentication -

모든 IP 주소를 Listen하고 있으며 포트는 5432, 커넥션 최대 수는 100으로 기본 설정되어 있다.

 

  • pghba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

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

기본적으로 로컬에서만 접근을 허용하고 있으며, 아래 코드를 선택하여 추가 후 저장한다.

# 외부 접근 모두 허용
host    all             all             0.0.0.0/0            scram-sha-256

# 특정 IP (10.10.10.10) 접근 허용
host    all             all             10.10.10.10/32       scram-sha-256

 

  • Reload Configuration

Server [localhost]: localhost
Database [postgres]: postgres
Port [5432]: 5432
Username [postgres]: postgres
postgres 사용자의 암호:
psql (14.4)
도움말을 보려면 "help"를 입력하십시오.
postgres=#

/* 쿼리를 이용한 pg_reload_conf 함수 실행 */
postgres-# select pg_reload_conf()

/* 또는 */

/* 커맨드의 pg_ctl 사용 */
postgres=# pg_ctl reload -D "C:\Program Files\PostgreSQL\14\data"


이 포스트는 Windows를 기반으로 설명하였지만, 리눅스나 MAC등 다른 OS에 서도 pghba.conf 파일을 수정함으로써 동일한 문제를 해결할 수 있다.

728x90

댓글