PostgreSQL kurulumu: kullanıcı, veritabanı ve güvenli uzaktan erişim (Ubuntu)

Linux Sunucu (SSH) 55 görüntülenme Markdown

PostgreSQL, güçlü ve ücretsiz bir ilişkisel veritabanıdır; Django, Rails, Laravel ve birçok modern uygulama tarafından kullanılır. Ubuntu 24.04'te depodaki sürüm 16'dır. Kurulumu basittir; dikkat edilmesi gereken kısım, veritabanını internete açmadan uygulamanıza bağlamaktır.

Kurulum

sudo apt update
sudo apt install -y postgresql
sudo systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"

Kurulum postgres adında bir sistem kullanıcısı ve aynı adda bir veritabanı yöneticisi oluşturur. Yapılandırma dosyaları /etc/postgresql/16/main/ altındadır (sürüm numarası değişebilir): postgresql.conf (genel ayarlar) ve pg_hba.conf (kimin nasıl bağlanabileceği).

Kullanıcı ve veritabanı oluşturma

Her uygulama için ayrı bir kullanıcı ve veritabanı açın; postgres yönetici kullanıcısını uygulamalarda kullanmayın:

sudo -u postgres psql
CREATE USER uygkullanici WITH PASSWORD 'GucluBirParola';
CREATE DATABASE uygulama OWNER uygkullanici;
\q

Bağlantıyı denemek için: psql -h 127.0.0.1 -U uygkullanici -d uygulama (parola sorar). Bağlanıyorsa uygulamanız aynı bilgilerle bağlanabilir. Parolada özel karakter varsa uygulamanın bağlantı adresinde (URL) kodlanması gerekebilir; sorun yaşarsanız daha sade bir parola seçin.

Uzaktan erişim (yalnızca gerekirse)

Uygulamanız aynı sunucudaysa uzaktan erişime gerek yoktur; varsayılan ayar yalnızca yerelden bağlanmaya izin verir. Başka bir sunucudan bağlanmanız gerekiyorsa iki yeri değiştirirsiniz:

  1. postgresql.conf içinde dinlenecek adresi açın: listen_addresses = 'localhost,203.0.113.10' (sunucunun özel ya da genel adresi). Mümkünse özel ağ adresini kullanın.
  2. pg_hba.conf dosyasının sonuna yalnızca izin verdiğiniz istemciyi ekleyin:
    host    uygulama    uygkullanici    198.51.100.7/32    scram-sha-256
    Bu satır "uygulama veritabanına uygkullanici kullanıcısıyla yalnızca 198.51.100.7 adresinden, parola (scram-sha-256) ile bağlanılabilir" demektir. Geniş bir aralık (0.0.0.0/0) yazmayın.
  3. Değişiklikleri uygulayın: sudo systemctl restart postgresql (yalnızca pg_hba.conf değiştiyse reload yeter).
  4. Güvenlik duvarında 5432 portunu yalnızca o istemci adresine açın: sudo ufw allow from 198.51.100.7 to any port 5432 proto tcp. Herkese açmayın: UFW rehberi.

Veritabanı portunu internete açık bırakmak, kaba kuvvet saldırılarının kapısını açar. Daha güvenli bir yol, istemcinin SSH tüneliyle bağlanmasıdır: ssh -L 5433:127.0.0.1:5432 kullanici@sunucu; sonra yerelde localhost:5433'e bağlanırsınız ve veritabanı portu hiç dışarıya açılmaz.

Yedek alma ve geri yükleme

sudo -u postgres pg_dump uygulama | gzip > /yedekler/uygulama-$(date +%F).sql.gz
gunzip -c uygulama-2026-10-20.sql.gz | sudo -u postgres psql uygulama

Dökümü düzenli alıp sunucu dışına kopyalayın: rsync ile yedek.

Sık hatalar

  • FATAL: Peer authentication failed for user: Yerelde psql -U kullanici yazdığınızda PostgreSQL işletim sistemi kullanıcısının adını da denetler. Parolayla bağlanmak için -h 127.0.0.1 (TCP) ekleyin.
  • FATAL: no pg_hba.conf entry for host: İstemciniz için pg_hba.conf'ta satır yok. Yukarıdaki satırı ekleyip reload yapın.
  • could not connect to server: Connection refused: Servis çalışmıyor ya da listen_addresses o adresi dinlemiyor.
  • Disk dolu: PostgreSQL yazamaz ve durur: disk doldu.

Sık sorulanlar

MySQL mi PostgreSQL mi?

İkisi de güvenilirdir. Uygulamanız hangisini destekliyorsa onu kullanın. MySQL/MariaDB için: MySQL ve MariaDB kurulumu.

postgres parolasını unuttum.

Yerel sistemde sudo -u postgres psql ile parolasız girip ALTER USER postgres PASSWORD 'yeni'; yazabilirsiniz; yerel erişim işletim sistemi kullanıcısına dayanır.

pgAdmin ya da başka grafik araçla bağlanabilir miyim?

Evet; SSH tüneli en güvenli yöntemdir. Aracın ayarında SSH tünelini tanımlayın ya da yukarıdaki komutla yerel bir port açın.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.