PostgreSQL/install

3. PostgreSQL RHEL 설치: 데이터베이스 접속 허용 및 방화벽 설정

최 재호 2025. 1. 7. 09:24

https://jhchoi.tistory.com/53 (이전 설치 가이드 주소)

이전 설치 가이드 까지만 적용하고 DB 계정 및 테이블스페이스, DB를 생성하고

SQL 편집기로 DB에 접근하려 하면 The connection attempt failed. 등의문구가 뜨면서 접속이 불가능 할 것이다.

 

DB 및 OS 에서 접속을 허용할 IP 를 설정해주지 않았기 때문이다.

 

 

0. 시작 전 필요에 따라 sudoers 권한 계정으로 접속

su -

 

1. postgresql.conf 파일 내  listen_addresses 설정

 

postgresql.conf  의 listen_addresses는 PostgreSQL 서버가 어떤 네트워크 인터페이스에서 연결을 수신할지 결정하는 설정. 기본값은 localhost로 설정되어 있어 로컬에서만 접속 가능.

 

# vi nano 등의 편집기를 이용하여 아래 파일을 편집

# 사용자 환경에 따라 /var/lib/pgsql 이후 경로는 상이할 수 있음.

nano /var/lib/pgsql/17/data/postgresql.conf

 

# /var/lib/pgsql/17/data/postgresql.conf 파일 내에서 주석 처리되어있는 아래 구문을 주석 제거

# 기존 설정 예시
#listen_addresses = 'localhost'

# 모든 IP에서의 접속을 허용하려면
listen_addresses = '*'

# 특정 IP에서만 접속을 허용하려면 (예: 192.168.1.100)
listen_addresses = 'localhost,192.168.1.100'

# DB 서비스 재시작
sudo systemctl restart postgresql-17

# DB 서비스 재실행
sudo systemctl reload postgresql-17

# DB 서비스 실행 상태 확인
sudo systemctl status postgresql-17

 

 

 

2. pg_hba.conf 설정

pg_hba.conf 파일은 PostgreSQL에 대한 클라이언트 인증 방식을 정의하는 파일이며,

여기서 호스트, 데이터베이스, 사용자, 인증 방법 등을 설정할 수 있음.

 

listen_addresses만 설정하고 pg_hba.conf 파일을 수정하지 않으면 PostgreSQL 서버는 외부에서의 연결 요청을 수신할 수 있지만, 실제로 클라이언트가 데이터베이스에 접속하려고 할 때 인증 단계에서 접근이 거부됨.

 

# vi nano 등의 편집기를 이용하여 아래 파일을 편집

# 사용자 환경에 따라 /var/lib/pgsql 이후 경로는 상이할 수 있음.

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

 


# 파일 내용의 최하단에 아래 중 필요한 내용을 작성하여 사용

# 내용 중 공백은 탭으로 정렬하여 사용

# 모든 IPv4 호스트에서 모든 데이터베이스, 모든 사용자에 대해 scram-sha-256 인증 허용
host all all 0.0.0.0/0 scram-sha-256

# 특정 IP 대역에서 특정 데이터베이스와 사용자에 대해 scram-sha-256 인증 허용
host mydatabase myuser 192.168.1.0/24 scram-sha-256

# DB 서비스 재시작
sudo systemctl restart postgresql-17

# DB 서비스 재실행
sudo systemctl reload postgresql-17

# DB 서비스 실행 상태 확인
sudo systemctl status postgresql-17

 

 

 

3. 방화벽 설정

 

#사용 중인 방화벽 zone 확인

firewall-cmd --get-active-zones

 

# 위의 zone 이름에 public 이 속해있었다면 public 의 정책 조회

firewall-cmd --list-all --zone=public

 

# public zone 에 postgres port 5432 허용 추가

# 즉시 허용 (재부팅 시 사라짐)
firewall-cmd --zone=public --add-port=5432/tcp

# 영구 설정
firewall-cmd --zone=public --add-port=5432/tcp --permanent

# 영구 설정 적용 
firewall-cmd --reload

# 정책 적용 확인
firewall-cmd --list-all --zone=public
728x90
반응형