PostgreSQL kurulumu: kullanıcı, veritabanı ve güvenli uzaktan erişim (Ubuntu)
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:
postgresql.confiç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.pg_hba.confdosyasının sonuna yalnızca izin verdiğiniz istemciyi ekleyin:
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 (host uygulama uygkullanici 198.51.100.7/32 scram-sha-2560.0.0.0/0) yazmayın.- Değişiklikleri uygulayın:
sudo systemctl restart postgresql(yalnızcapg_hba.confdeğiştiysereloadyeter). - 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: Yereldepsql -U kullaniciyazdığı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çinpg_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 dalisten_addresseso 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
- MySQL / MariaDB veritabanı nasıl kurulur ve güvenli kullanılır?
- UFW ile port açma ve kapatma (Ubuntu güvenlik duvarı)
- Linux'ta rsync ile yedek alma: sunucudan sunucuya ve zamanlanmış
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.
Geri bildiriminiz için teşekkürler!