dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/postgresql-connection-refused
PostgreSQL
PG 14 - 17Bağlantı & Ağ
4 dk okuma
could not connect to server: Connection refused

PostgreSQL "Connection refused" — Sunucu mu Kapalı, Ağ mı Engelli?

Connection refused, timeout ve "no pg_hba.conf entry" arasındaki fark; listen_addresses, port, firewall ve Docker port yayınlama kontrolleri.

İnceleyen:Kıdemli Veritabanı Mimarı & SRE (dataiotech Labs)
Test Edilen Sürümler: PostgreSQL 14.10, 15.6, 16.4, 17.0 (Ubuntu 24.04 LTS / Docker 26.1)

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 27 Ekim 2026
Test Edilen SürümlerPostgreSQL 14.10, 15.6, 16.4, 17.0 (Ubuntu 24.04 LTS, Docker 26.1, Kernel 6.8)
Gerekli YetkiSUPERUSER veya pg_read_all_stats / pg_signal_backend
Risk Seviyesi
Mediumİşlemdeki oturumları pg_terminate_backend ile sonlandırmak uygulama katmanında rollback yaratır
Beklenen Çıktıpg_stat_activity sorgusunda bağlantı sayısının güvenli eşik altına inmesi
Geri Dönüş (Rollback) Planı:Geçici session timeout parametrelerini sıfırlama, pgbouncer reload veya pool boyutunu eski haline alma
PostgreSQL Docs: Connections
İlk 60 Saniye Teşhis Protokolü:

Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.

▸Belirti

plaintext
psql: error: connection to server at "10.0.4.12", port 5432 failed: could not connect to server: Connection refused Is the server running on that host and accepting TCP/IP connections?

Bu hata mesajı nettir: hedef portta dinleyen hiçbir süreç yok. Yani sorun kimlik doğrulama değil, ağ ya da süreç seviyesindedir.

MesajKatmanAnlamı
Connection refusedAğ/süreçPortta dinleyen yok ya da bağlantı aktif reddedildi
Connection timed outAğPaketler düşüyor: firewall, security group, yanlış IP
no pg_hba.conf entryKimlik doğrulamaSunucuya ulaşıldı, kural eşleşmedi

▸Adım adım teşhis

1. Sunucuya ağ erişiminiz var mı?

bash
pg_isready -h 10.0.4.12 -p 5432

2. Süreç ayakta mı ve hangi arayüzü dinliyor?

bash
sudo systemctl status postgresql sudo ss -ltnp | grep 5432

ss çıktısında 127.0.0.1:5432 görüp 0.0.0.0:5432 görmüyorsanız, sunucu yalnızca yerel bağlantı kabul ediyor demektir.

3. Dinleme adresini kontrol edin.

sql
SHOW listen_addresses; SHOW port;

Varsayılan localhost'tur. Değiştirmek için:

sql
ALTER SYSTEM SET listen_addresses = '*';

Bu ayar yeniden başlatma gerektirir:

bash
sudo systemctl restart postgresql

4. Firewall ve Security Group kontrolleri.

bash
sudo ufw status sudo iptables -L -n | grep 5432

5. Docker port haritalama kontrolü. Konteyner içinde PostgreSQL çalışsa bile, -p 5432:5432 verilmediyse ana makineden ulaşılamaz:

bash
docker ps --format "table {{.Names}}\t{{.Ports}}"

6. Disk dolması kaynaklı çökme kontrolü.

bash
sudo tail -50 /var/log/postgresql/postgresql-17-main.log df -h

▸İlgili Mühendislik Rehberleri ve İç Linkler

Diğer Veritabanı Hata Teşhisleri

Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.

Tüm Hatalar (20)