dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/postgresql-no-pg-hba-conf-entry
PostgreSQL
PostgreSQL 14–18Ağ & Kimlik Doğrulama
7 dk okuma
FATAL: no pg_hba.conf entry for host, user, database, SSL off / no encryption (SQLSTATE 28000)

PostgreSQL "no pg_hba.conf entry for host" — Kural Var, Neden Reddediliyor?

pg_hba.conf'un ilk eşleşen satırı uygulaması, pg_hba_file_rules ile kuralları denetleme, hostssl farkı ve yükleme adımı.

İnceleyen:Principal Database Reliability Architect
Test Edilen Sürümler: PostgreSQL 18.6 & 17.11 (Alpine Linux / Ubuntu 24.04 LTS / Docker 29.7) | Tarihsel: PostgreSQL 14, 15, 16

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 30 Ekim 2026
Test Edilen SürümlerPostgreSQL 18.6 & 17.11 (Alpine / Ubuntu 24.04, Docker 29.7) | Tarihsel: 14.10, 15.6, 16.4
Gerekli YetkiSUPERUSER (pg_hba_file_rules ve pg_reload_conf için) veya işletim sistemi dosya erişimi
Risk Seviyesi
HighTüm ağa (0.0.0.0/0) trust veya md5 vermek veritabanını dış saldırılara ve yetkisiz erişimlere tamamen açar
Beklenen Çıktıpg_hba_file_rules görünümünde ilk eşleşen satırın dar ve hedefe yönelik olması, pg_reload_conf() ile 0 hata
Geri Dönüş (Rollback) Planı:En üstteki geniş kuralları kaldırıp dar CIDR bloğu (10.0.2.0/24) ve scram-sha-256 yöntemi tanımlama
PostgreSQL Docs: The pg_hba.conf File & Precedence
İ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
FATAL: no pg_hba.conf entry for host "10.0.2.15", user "app", database "app", no encryption FATAL: no pg_hba.conf entry for host "10.0.2.15", user "app", database "app", SSL off

SQLSTATE kodu: 28000 (invalid_authorization_specification).

Hatanın sonundaki ibare (SSL off, no encryption veya SSL on) istemcinin bağlantıyı TLS ile mi yoksa düz metin (plaintext) mi kurmaya çalıştığını gösterir.

Bu hata veritabanı yöneticilerinin karşısına genellikle *"Ama ben pg_hba.conf dosyasına kuralı ekledim, neden hâlâ reddediyor?"* sorusuyla gelir.

ÖNEMLİ
Altın Kural: pg_hba.conf İLK EŞLEŞEN SATIRI Uygular! pg_hba.conf güvenlik dosyasında güvenlik duvarlarındaki gibi "en dar veya en özel kural kazanır" mantığı yoktur. PostgreSQL dosyayı yukarıdan aşağıya satır satır okur ve uyan İLK kuralı seçer. Eğer dosyanın üst sıralarında genel bir kural varsa (host all all 0.0.0.0/0 reject veya hostssl all all ...), altına yazdığınız özel host app app 10.0.2.15/32 kuralı asla çalışmaz! İlk eşleşen satır sonraki tüm satırları gölgeler.

▸Kural Dosyasını Denetlemenin En Güvenilir Yolu

Dosyayı işletim sistemi editörleriyle elle okumak yerine PostgreSQL motorunun bu dosyayı nasıl ayrıştırdığını yerleşik görünümden sorgulayın:

sql
SELECT line_number, type, database, user_name, address, netmask, auth_method, error FROM pg_hba_file_rules ORDER BY line_number;

Bu görünüm üç kritik avantaj sağlar:

  1. 1Kuralların PostgreSQL gözündeki gerçek değerlendirme sırasını gösterir.
  2. 2`error` sütunu: Eğer satırda sözdizimi (syntax) hatası varsa PostgreSQL o satırı sessizce atlar; hatayı bu sütunda açıkça görürsünüz.
  3. 3Hangi dosyanın geçerli olduğunu doğrulamak için:
sql
SHOW hba_file; SHOW listen_addresses; SHOW port;

Birden fazla PGDATA veya PostgreSQL kümesi olan sunucularda, yanlış pg_hba.conf dosyasını düzenleyip sunucuyu reload etmek en sık yapılan ikinci hatadır.


▸`host` vs `hostssl` vs `hostnossl` Ayrımı

  • •`host`: Hem TLS (şifreli) hem de şifresiz düz TCP bağlantılarını kabul eder.
  • •`hostssl`: SADECE TLS/SSL ile kurulan bağlantıları kabul eder. Eğer istemciniz bağlantı dizgisinde SSL açmadıysa (sslmode=disable), bu kural eşleşmez ve logda no pg_hba.conf entry ... SSL off hatası basılır.
  • •`hostnossl`: SADECE şifresiz bağlantıları kabul eder; TLS kullanan istemciler bu kuralı geçemez.

▸Adım Adım Kalıcı Çözüm

1. Kuralı Doğru Konuma ve Dar Kapsamla Yazın

Dosyanın en üstüne yakın, spesifik bir kural ekleyin:

plaintext
# TYPE DATABASE USER ADDRESS METHOD hostssl app app 10.0.2.0/24 scram-sha-256
UYARI
Eski md5 kimlik doğrulama yöntemini kullanmayın; modern ortamlarda brute-force saldırılarına dayanıklı olan `scram-sha-256` standardını tercih edin.

2. Konfigürasyonu Sıfır Kesintiyle Yeniden Yükleyin

pg_hba.conf değişiklikleri için PostgreSQL servisini yeniden başlatmaya (restart) gerek yoktur! Çalışan açık oturumları kesmeden ayarları anında geçerli kılmak için:

sql
SELECT pg_reload_conf();

Veya Linux kabuğundan:

bash
pg_ctl reload -D /var/lib/postgresql/data # veya systemctl reload postgresql
NOT
Reload işlemi yalnızca yeni kurulan bağlantılar için geçerlidir. Daha önce açılmış oturumlar kesilmez.

3. listen_addresses Parametresini Doğrulayın

Eğer pg_hba.conf kuralınız doğru olduğu halde bağlantı reddediliyorsa, postgresql.conf dosyasında sunucunun dış ağ kartını dinleyip dinlemediğini kontrol edin:

ini
listen_addresses = '*'

listen_addresses = 'localhost' ise PostgreSQL dış IP'lerden gelen paketleri işletim sistemi soket düzeyinde doğrudan reddeder (H-07).


▸İlgili Hata Rehberleri & Hub Bağlantıları

Diğer Veritabanı Hata Teşhisleri

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

Tüm Hatalar (50)