rhel의 dnf install을 통해 설치한 13 버전의 db를 같은 방법으로 17버전으로 업그레이드를 할 때 GPT가 잘 알려줬다.
문제는 sudo systemctl start postgresql-17 로 분명 켰는데 WAS 에서 DB 접근 시에 connection refused 가 나와서
GPT의 도움을 받으니 다음과 같이 말해주더라.
=====
그럼 이제는 설정값 자체보다 “실제로 어느 설정 파일/서비스를 보고 있는지” 를 의심해야 해.
지금 같은 경우는 보통 아래 5개 중 하나야.
- postgresql.conf 를 수정했지만 다른 경로의 실제 설정 파일을 보고 있음
- 설정 바꿨지만 재기동이 안 됐거나 다른 인스턴스가 떠 있음
- listen_addresses 는 맞는데 방화벽/SELinux 가 막음
- pg_hba.conf 문제가 아니라, 애초에 TCP listen 자체가 여전히 localhost만 열려 있음
- JBoss가 접속하는 대상 IP가 내가 생각한 DB IP와 다름
지금 로그상 제일 중요한 건 이거야:
::1:5432 LISTEN
이건 무조건 아직 외부 IP로 안 열려 있는 상태야.
즉, JBoss 설정 문제가 아니라 DB 쪽 listen 상태가 여전히 안 바뀐 것부터 해결해야 해.
1단계: PostgreSQL이 “진짜로” 어떤 설정 파일을 쓰는지 확인
DB 서버 192.168.56.110 에서 postgres 계정 또는 root로 아래 실행:
sudo -u postgres psql -c "show config_file;"
sudo -u postgres psql -c "show hba_file;"
sudo -u postgres psql -c "show data_directory;"
sudo -u postgres psql -c "show listen_addresses;"
sudo -u postgres psql -c "show port;"
여기서 봐야 하는 것:
- config_file 경로
- hba_file 경로
- 현재 인식 중인 listen_addresses
중요
네가 수정한 파일 경로와
show config_file; 결과가 다르면
엉뚱한 파일을 수정한 것이야.
2단계: 서비스가 진짜 어떤 프로세스를 띄우는지 확인
DB 서버에서:
ps -ef | grep postgres
systemctl status postgresql-17 -l
systemctl cat postgresql-17
그리고 실제 리슨 상태 확인:
ss -lntp | grep 5432
정상이면 이런 식이어야 해:
LISTEN 0 ... 0.0.0.0:5432
또는
LISTEN 0 ... 192.168.56.110:5432
그런데 지금처럼 127.0.0.1:5432 만 보이면
설정 적용이 안 된 거야.
3단계: 설정 파일을 정확히 수정
show config_file; 로 나온 그 파일을 열어서 확인:
이 줄 찾아서:
또는
이걸 아래처럼 바꿔:
포트도 같이 확인:
저장 후, show hba_file; 로 나온 파일도 수정:
예시:
host all all 192.168.56.101/32 scram-sha-256
대역 허용이면:
4단계: 적용 방법을 확실히
재기동:
systemctl restart postgresql-17
직후 바로 확인:
systemctl status postgresql-17 -l
ss -lntp | grep 5432
sudo -u postgres psql -c "show listen_addresses;"
여기서도 여전히 localhost 면
설정 파일이 다른 거거나 서비스가 다른 것
5단계: 서버 로컬에서 자기 IP로 접속 테스트
DB 서버 192.168.56.110 본인에서 이 테스트가 중요해.
telnet 192.168.56.110 5432
또는
psql -h 192.168.56.110 -U postgres -d postgres
해석
- 여기서도 Connection refused 면
외부 서버 문제가 아니라 DB 서버가 자기 IP에도 안 열려 있는 상태 - 여기서 성공하고 원격에서만 실패면
그때는 방화벽/SELinux 쪽을 보면 돼
6단계: firewalld 확인
DB 서버에서:
systemctl status firewalld
firewall-cmd --list-all
firewall-cmd --list-ports
5432 허용 안 되어 있으면:
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
7단계: SELinux 확인
DB 서버에서:
Enforcing 이면 일단 테스트로 잠깐 내려서 확인:
그다음 원격에서 다시:
- 이때 되면 SELinux 영향 가능성 있음
- 그래도 안 되면 SELinux 아님
테스트 끝나면 다시:
8단계: PostgreSQL 로그 확인
재기동 직후 로그를 봐야 해.
참고로 내 경우에는 1번에서 해결되었다.
13버전에서 쓰던 conf 파일이 17에도 먹힐 줄 알았는데 별도의 경로에서 동작하고 있더라..
'DB관련' 카테고리의 다른 글
| cubrid DB 설치 (0) | 2026.04.02 |
|---|---|
| postgresql 설치와 DB 계정과 테이블 생성 (0) | 2026.03.12 |
| 테스트 용 Rocky Linux9 에 Maria DB 설치 (0) | 2026.03.05 |
| [mysql8] JNDI 테스트 관련 계정 생성 및 테이블 생성 (0) | 2024.08.07 |
| JDBC_Driver Certi 관련 정리 (0) | 2022.01.27 |