UmutKarakuş
Commands

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.conf veya /etc/postgresql/data/postgresql.conf

Aşağıdaki komutla dosyanın kesin konumunu bulabilirsiniz (eğer PostgreSQL çalışıyorsa):

Kod / Komut
sudo -u postgres psql -c "SHOW config_file;"

Dosyayı bir metin editörü ile açın (örnek olarak Ubuntu 14 için):

Kod / Komut
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:

Kod / Komut
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.

Kod / Komut
sudo nano /etc/postgresql/14/main/pg_hba.conf

Dosyanın sonuna, uzaktan erişime izin vermek istediğiniz kuralı ekleyin. İşte bazı yaygın örnekler:

  • Belirli bir IP adresinden erişim:

    Kod / Komut
    host    all             all             192.168.1.100/32        md5

    Bu kural, 192.168.1.100 IP adresinden gelen tüm kullanıcıların tüm veritabanlarına md5 şifre ile bağlanmasına izin verir.

  • Belirli bir IP aralığından erişim:

    Kod / Komut
    host    all             all             192.168.1.0/24          md5

    Bu kural, 192.168.1.x ağındaki tüm IP adreslerinden gelen bağlantılara izin verir.

  • Tüm IP adreslerinden erişim (Güvenlik Riski Taşır):

    Kod / Komut
    host    all             all             0.0.0.0/0               md5

    UYARI: 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:

Kod / Komut
sudo ufw allow 5432/tcp
Kod / Komut
sudo ufw enable
Kod / Komut
sudo ufw status

firewalld (CentOS/RHEL) için:

Kod / Komut
sudo firewall-cmd --permanent --add-port=5432/tcp
Kod / Komut
sudo firewall-cmd --reload
Kod / Komut
sudo firewall-cmd --list-ports

Adım 4: PostgreSQL Servisini Yeniden Başlatma

Yapılan değişikliklerin etkili olması için PostgreSQL servisini yeniden başlatmanız gerekir:

Kod / Komut
sudo systemctl restart postgresql

Veya eski versiyonlar için:

Kod / Komut
sudo service postgresql restart

Adı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:

Kod / Komut
psql -h Sunucu_IP_Adresi -p 5432 -U Kullanici_Adi -d Veritabani_Adi

Ya 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.