Yapılandırma Dosyaları
PostgreSQL iki ana yapılandırma dosyası kullanır:
| Dosya | Konum | Amaç |
|---|---|---|
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
- 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
| Method | Açıklama | Güvenlik |
|---|---|---|
trust | Şifresiz erişim | ❌ Tehlikeli |
peer | OS kullanıcısı = DB kullanıcısı | ✅ Yerel için iyi |
md5 | MD5 şifreleme | ⚠️ Eski |
scram-sha-256 | Modern şifreleme | ✅ Önerilen |
cert | SSL 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