Linux Üzerindeki PostgreSQL Veritabanına Uzaktan Erişim Sağlama Rehberi
Bu rehber, Linux sunucular üzerinde çalışan PostgreSQL veritabanlarına uzaktan erişimi nasıl yapılandıracağınızı adım adım açıklamaktadır. PostgreSQL yapılandırma dosyalarının düzenlenmesi, güvenlik duvarı ayarları ve bağlantı testi gibi önemli adımları içermektedir.
Giriş
PostgreSQL, güçlü ve açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir. Genellikle bir sunucu üzerinde çalışır ve uygulamaların veya diğer istemcilerin bu veritabanına uzaktan erişmesi gerekebilir. Özellikle sunucu yönetimi, web hosting veya bulut altyapıları gibi alanlarda çalışanlar için bu yetenek kritik öneme sahiptir. Bu rehber, Linux işletim sistemi üzerinde çalışan bir PostgreSQL veritabanına uzaktan erişimi nasıl yapılandıracağınızı adım adım açıklamaktadır.
Gereksinimler
- Linux tabanlı bir sunucu (Ubuntu, Debian, CentOS vb.)
- PostgreSQL kurulumu yapılmış olması
- Root veya sudo yetkilerine sahip bir kullanıcı
Adım 1: PostgreSQL Yapılandırma Dosyasını Düzenleme (postgresql.conf)
PostgreSQL'in dışarıdan gelen bağlantıları dinlemesi için postgresql.conf dosyasında listen_addresses parametresini düzenlemeniz gerekir. Bu dosyanın konumu dağıtıma ve PostgreSQL sürümüne göre değişebilir. Yaygın konumlar:
- Debian/Ubuntu:
/etc/postgresql/{versiyon}/main/postgresql.conf - CentOS/RHEL:
/var/lib/pgsql/{versiyon}/data/postgresql.confveya/etc/postgresql/data/postgresql.conf
Aşağıdaki komutla dosyanın kesin konumunu bulabilirsiniz (eğer PostgreSQL çalışıyorsa):
sudo -u postgres psql -c "SHOW config_file;"Dosyayı bir metin editörü ile açın (örnek olarak Ubuntu 14 için):
sudo nano /etc/postgresql/14/main/postgresql.confİçerisinde listen_addresses satırını bulun (genellikle yorum satırı halindedir) ve aşağıdaki gibi değiştirin:
listen_addresses = '*'Bu ayar, PostgreSQL'in tüm ağ arayüzlerinden gelen bağlantıları dinlemesini sağlar. Belirli bir IP adresinden bağlantı kabul etmek isterseniz, listen_addresses = '192.168.1.100' gibi bir değer de belirtebilirsiniz.
Adım 2: İstemci Kimlik Doğrulama Dosyasını Düzenleme (pg_hba.conf)
pg_hba.conf dosyası, hangi istemcilerin hangi veritabanlarına, hangi kullanıcılarla ve hangi kimlik doğrulama yöntemiyle bağlanabileceğini tanımlar. Bu dosyanın konumu genellikle postgresql.conf ile aynı dizindedir.
sudo nano /etc/postgresql/14/main/pg_hba.confDosyanın sonuna, uzaktan erişime izin vermek istediğiniz kuralı ekleyin. İşte bazı yaygın örnekler:
Belirli bir IP adresinden erişim:
host all all 192.168.1.100/32 md5Bu kural,
192.168.1.100IP adresinden gelen tüm kullanıcıların tüm veritabanlarınamd5şifre ile bağlanmasına izin verir.Belirli bir IP aralığından erişim:
host all all 192.168.1.0/24 md5Bu kural,
192.168.1.xağındaki tüm IP adreslerinden gelen bağlantılara izin verir.Tüm IP adreslerinden erişim (Güvenlik Riski Taşır):
host all all 0.0.0.0/0 md5UYARI: Bu kural, güvenlik açısından zayıftır ve sadece test ortamlarında veya çok iyi korunmuş ağlarda kullanılmalıdır. Üretim ortamlarında belirli IP adresleri veya ağ aralıkları tanımlanması şiddetle tavsiye edilir.
md5 yerine scram-sha-256 (PostgreSQL 10 ve üzeri için önerilir) veya trust (kimlik doğrulaması yapmaz, güvenlik riski yüksek) gibi başka kimlik doğrulama yöntemleri de kullanabilirsiniz. Üretim ortamları için scram-sha-256 veya cert gibi daha güvenli yöntemler tercih edilmelidir.
Adım 3: Güvenlik Duvarı Yapılandırması
Linux sunucunuzdaki güvenlik duvarı (firewall), PostgreSQL'in varsayılan portu olan 5432 üzerinden gelen bağlantıları engelliyor olabilir. Bu portu açmanız gerekmektedir.
UFW (Ubuntu/Debian) için:
sudo ufw allow 5432/tcpsudo ufw enablesudo ufw statusfirewalld (CentOS/RHEL) için:
sudo firewall-cmd --permanent --add-port=5432/tcpsudo firewall-cmd --reloadsudo firewall-cmd --list-portsAdım 4: PostgreSQL Servisini Yeniden Başlatma
Yapılan değişikliklerin etkili olması için PostgreSQL servisini yeniden başlatmanız gerekir:
sudo systemctl restart postgresqlVeya eski versiyonlar için:
sudo service postgresql restartAdım 5: Uzaktan Bağlantıyı Test Etme
Artık farklı bir makineden (istemci) PostgreSQL veritabanınıza bağlanmayı deneyebilirsiniz. Örneğin, psql komutu ile:
psql -h Sunucu_IP_Adresi -p 5432 -U Kullanici_Adi -d Veritabani_AdiYa da bir GUI aracı (DBeaver, pgAdmin vb.) kullanarak bağlantı kurmayı deneyebilirsiniz. Bağlantı sorunları yaşarsanız, sunucu IP adresini, PostgreSQL kullanıcısını ve şifresini doğru girdiğinizden ve güvenlik duvarı ayarlarınızın doğru olduğundan emin olun.
Sonuç
Bu adımları takip ederek Linux sunucunuzdaki PostgreSQL veritabanına uzaktan erişimi başarıyla yapılandırabilirsiniz. Güvenlik ayarlarınızı her zaman dikkatli bir şekilde yapmayı ve sadece güvenilir IP adreslerinden erişime izin vermeyi unutmayın. Özellikle üretim ortamlarında 0.0.0.0/0 gibi geniş erişim kurallarından kaçınarak ağ güvenliğinizi en üst düzeyde tutmanız kritik öneme sahiptir.