Orta Seviye8 dkSon Güncelleme: 2026-09-13

PostgreSQL 16: Kurulum, Kullanıcı Yetkileri ve Uzaktan Bağlantı

Panelden açtığınız PostgreSQL hizmetine uygulamanızı bağlama, rol ve şema yetkilerini doğru kurma ve pg_dump ile yedek alma rehberi.

Şu sürümlerde doğrulandı

PostgreSQL
16
İstemci
psql 16 / pgAdmin 4
Son kontrol
2026-09-13

Başlamadan önce

  • Panelde açılmış ve en az bir kez başlatılmış bir PostgreSQL hizmeti
  • Hizmetin IP adresi ve portu (panelde 'Bağlantı Adresi' kartında yazar)
  • Yerel makinenizde psql veya pgAdmin
Bu Sayfada
Tüm Rehberler
Okuma ilerlemesi

PostgreSQL, MySQL'den farklı olarak kullanıcı (role) ve veritabanı yetkilerini birbirinden ayrı tutar. Yeni başlayanların en çok takıldığı yer budur: bir role veritabanına bağlanma izni vermek, o roldeki kullanıcının tablo oluşturabileceği anlamına gelmez. Bu rehber, sıfırdan bir uygulama kullanıcısı oluşturup yalnızca ihtiyacı olan yetkileri verme yolunu izler.

İlk bağlantı ve süper kullanıcı#

Panelde hizmeti oluşturduğunuzda başlangıç kullanıcısı ve parolası ortam değişkenlerinde tanımlanır; bunları hizmet detayındaki 'Başlatma Değişkenleri' bölümünde görebilirsiniz. İlk bağlantıyı bu kullanıcıyla yapın, ardından uygulamanız için ayrı bir rol oluşturun — uygulamayı süper kullanıcıyla çalıştırmak, bir SQL injection açığını tüm veritabanının kaybına dönüştürür.

Yerel terminal
# Panelde yazan IP ve portu kullanin
psql "postgresql://postgres:[email protected]:5432/postgres"

# Baglanti kuruldu mu?
postgres=# SELECT version();

Uygulama için ayrı rol ve veritabanı#

psql
-- 1) Rolu olustur (LOGIN olmadan baglanamaz)
CREATE ROLE uygulama WITH LOGIN PASSWORD 'guclu-bir-parola';

-- 2) Veritabanini bu rolun sahipligiyle olustur
CREATE DATABASE uygulama_db OWNER uygulama;

-- 3) Herkese acik public semasindan yazma yetkisini al
\c uygulama_db
REVOKE CREATE ON SCHEMA public FROM PUBLIC;

-- 4) Yalnizca uygulama rolune ver
GRANT ALL ON SCHEMA public TO uygulama;

Uzaktan erişimi güvenli tutmak#

  • Veritabanı portunu herkese açmak yerine yalnızca uygulama sunucunuzun IP'sinden erişime izin verin.
  • Parolayı uygulama kodunda değil, hizmetin ortam değişkenlerinde tutun.
  • Farklı ortamlar (test / canlı) için farklı rol ve parola kullanın; aynı parolayı paylaşmak, test ortamına sızan birine canlıyı da açar.
  • Yalnızca okuma yapan servisler için ayrı bir rol açıp SELECT yetkisiyle sınırlayın.

pg_dump ile yedek almak#

Yedek alma ve geri yükleme

Yerel terminal
# Ozel bicim (-Fc): sikistirilmis ve secici geri yuklemeye uygun
pg_dump -Fc \
  -h 192.0.2.10 -p 5432 -U uygulama \
  -d uygulama_db \
  -f uygulama_db_$(date +%F).dump

Sorun Giderme

Belirti

connection refused / timeout

Sebep

Hizmet durmuş, yanlış port kullanılıyor veya PostgreSQL yalnızca localhost'u dinliyor.

Çözüm

Panelde hizmetin çalıştığını ve 'Bağlantı Adresi' kartındaki portu doğrulayın; listen_addresses değerinin '*' olduğundan emin olun.

Belirti

permission denied for schema public

Sebep

PostgreSQL 15+ davranışı: role yalnızca bağlanma izni verilmiş, şemada oluşturma izni verilmemiş.

Çözüm

GRANT ALL ON SCHEMA public TO <rol>; komutunu ilgili veritabanına bağlıyken çalıştırın.

Belirti

too many clients already

Sebep

Uygulama her istekte yeni bağlantı açıyor ve kapatmıyor; max_connections doluyor.

Çözüm

Uygulamada bağlantı havuzu (connection pool) kullanın; havuz boyutunu max_connections'ın altında tutun.

Sık Sorulanlar

MySQL'den PostgreSQL'e geçmeli miyim?

Çalışan bir MySQL kurulumunuz varsa yalnızca somut bir ihtiyaç için geçin: JSONB üzerinde indeksleme, gelişmiş pencere fonksiyonları, coğrafi veri (PostGIS) veya katı tip kontrolü gibi. Geçişin kendisi bir maliyettir ve her iki motor da tipik bir web uygulaması için fazlasıyla yeterlidir.

Panelden veritabanı oluşturamıyorum, neden?

PostgreSQL burada ayrı bir hizmet olarak çalışır; veritabanlarını panel üzerinden değil, psql ile CREATE DATABASE komutuyla oluşturursunuz. Bu rehberdeki adımlar tam olarak bu yolu izler.

Bu rehber işinize yaradı mı?

Geri bildiriminiz doğrudan rehberi güncelleyen ekibe gider.

İlgili Rehberler