본문 바로가기
🗄️ DB_이야기/# 🐘 PostgreSQL

🐘 [PostgreSQL] 기동 실패 에러: "could not bind IPv4 address"

by gwon_s 2025. 7. 24.

 

🔍 문제 상황

PostgreSQL을 기동하려고 했는데, 다음과 같은 로그가 출력됩니다

2025-07-24 06:57:13.717 GMT [170150] LOG:  starting PostgreSQL 17.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5.0.1), 64-bit
2025-07-24 06:57:13.717 GMT [170150] LOG:  could not bind IPv4 address "10.0.0.61": Cannot assign requested address
2025-07-24 06:57:13.717 GMT [170150] WARNING:  could not create listen socket for "10.0.0.61"
2025-07-24 06:57:13.724 GMT [170150] FATAL:  could not create any TCP/IP sockets
2025-07-24 06:57:13.933 GMT [170150] LOG:  database system is shut down

🧠 원인 분석

해당 에러는 PostgreSQL이 설정 파일(postgresql.conf)에서
접속을 허용할 IP 주소(listen_addresses)를 10.0.0.61로 지정했지만 실제로 서버에는 이 IP가 존재하지 않기 때문에 발생합니다.

 

즉, PostgreSQL이 "10.0.0.61에 바인딩하려 했지만, 그 IP는 내 것이 아닌데요?" 라며 거부하는 것입니다 😅

 


🛠️ 해결 방법

✅ 1. 현재 서버 IP 확인

[postgres@gwon-sub pg_log]$ ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UP group default qlen 1000
    link/ether 02:00:17:01:d8:60 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 10.0.0.117/24 brd 10.0.0.255 scope global dynamic noprefixroute ens3
       valid_lft 70472sec preferred_lft 70472sec
    inet6 fe80::17ff:fe01:d860/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

 

 

✅ 2. postgresql.conf 수정

  • archive_mode, archive_command, archive_timeout, hot_standby 파라미터는 서버 구성에 맞게 적절히 설정
[postgres@gwon-sub data]$ vi $PGDATA/postgresql.conf

#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------

...(생략)...
cluster_name = 'standby_db'
listen_addresses = '10.0.0.117'
port = 5432
#archive_mode = on
#archive_command = 'cp %p /postgres/app/postgres/pgsql17/pg_arch/%f'
#archive_timeout = 120
hot_standby = on
...(생략)...

 

 

 

✅ 3. PostgreSQL 재시작

[postgres@gwon-sub data]$ $PG_HOME/bin/pg_ctl -D $PGDATA start

🎯 마무리

PostgreSQL의 기동 실패는 대부분 설정 실수에서 비롯됩니다.


특히 IP 설정 관련 이슈는 환경이 복잡할수록 자주 발생하니, listen_addresses 설정 전에는 반드시 서버에 존재하는 IP인지 확인하세요!