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

https://kervanhosting.com/bilgi-bankasi/makale/postgresql-kurulumu-kullanici-veritabani-ve-uzaktan-erisim-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:

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](https://kervanhosting.com/bilgi-bankasi/makale/ufw-ile-port-acma-ve-kapatma-ubuntu-guvenlik-duvari).

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](https://kervanhosting.com/bilgi-bankasi/makale/linux-sunucuda-rsync-ile-yedek-alma).

## 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](https://kervanhosting.com/bilgi-bankasi/makale/disk-doldu-sunucumda-nasil-yer-acarim).

## 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](https://kervanhosting.com/bilgi-bankasi/makale/mysql-mariadb-veritabani-nasil-kurulur-ve-guvenli-kullanilir).

### 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?](https://kervanhosting.com/bilgi-bankasi/makale/mysql-mariadb-veritabani-nasil-kurulur-ve-guvenli-kullanilir)
- [UFW ile port açma ve kapatma (Ubuntu güvenlik duvarı)](https://kervanhosting.com/bilgi-bankasi/makale/ufw-ile-port-acma-ve-kapatma-ubuntu-guvenlik-duvari)
- [Linux'ta rsync ile yedek alma: sunucudan sunucuya ve zamanlanmış](https://kervanhosting.com/bilgi-bankasi/makale/linux-sunucuda-rsync-ile-yedek-alma)

*Sorununuz çözülmediyse [destek talebi açın](https://kervanhosting.com/destek-taleplerim). Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.*
