PostgreSQL Yapılandırma

postgresql.conf ve pg_hba.conf dosyalarının detaylı açıklaması

Yapılandırma Dosyaları

PostgreSQL iki ana yapılandırma dosyası kullanır:

DosyaKonumAmaç
postgresql.conf/etc/postgresql/16/main/Sunucu ayarları
pg_hba.conf/etc/postgresql/16/main/Erişim kontrolü

postgresql.conf

Ana yapılandırma dosyası. Bellek, bağlantı ve performans ayarlarını içerir.

Bağlantı Ayarları

# Dinlenecek IP adresleri
listen_addresses = 'localhost'    # Sadece yerel
listen_addresses = '*'           # Tüm IP'ler (uzak erişim için)

# Port
port = 5432

# Maksimum eşzamanlı bağlantı
max_connections = 100
listen_addresses = '*' ayarı yaparsanız mutlaka pg_hba.conf ile erişimi kısıtlayın!

Bellek Ayarları

# Paylaşılan bellek (RAM'in %25'i önerilir)
shared_buffers = 256MB

# İş belleği (sorgu başına)
work_mem = 4MB

# Bakım işlemleri için
maintenance_work_mem = 64MB

# Önbellek boyutu (RAM'in %50-75'i)
effective_cache_size = 1GB
Önerilen Formüller:
- shared_buffers = RAM * 0.25
- effective_cache_size = RAM * 0.75
- work_mem = RAM / max_connections / 2

WAL (Write-Ahead Logging)

# WAL seviyesi
wal_level = replica

# Checkpoint ayarları
checkpoint_completion_target = 0.9
max_wal_size = 1GB
min_wal_size = 80MB

pg_hba.conf

Host-Based Authentication - Kim nereden hangi veritabanına nasıl bağlanabilir?

Format

# TYPE  DATABASE  USER  ADDRESS       METHOD
local   all       all                 peer
host    all       all   127.0.0.1/32  scram-sha-256
host    all       all   ::1/128       scram-sha-256

Uzak Erişim Ekleme

# Belirli IP'den erişim
host    mydb      myuser  192.168.1.100/32    scram-sha-256

# Subnet'ten erişim
host    all       all     192.168.1.0/24      scram-sha-256

# Tüm IP'lerden (DİKKAT!)
host    all       all     0.0.0.0/0           scram-sha-256

Authentication Methods

MethodAçıklamaGüvenlik
trustŞifresiz erişim❌ Tehlikeli
peerOS kullanıcısı = DB kullanıcısı✅ Yerel için iyi
md5MD5 şifreleme⚠️ Eski
scram-sha-256Modern şifreleme✅ Önerilen
certSSL sertifika✅ En güvenli

Değişiklikleri Uygula

# Yapılandırmayı yeniden yükle (restart gerekmez)
sudo -u postgres psql -c "SELECT pg_reload_conf();"

# Veya
sudo systemctl reload postgresql