PostgreSQL Kurulumu ve Temel Ayarlar
PostgreSQL'i Windows, macOS, Ubuntu ve Docker'da kurup pgAdmin, rol ve veritabanı oluşturma ile temel psql komutlarıyla çalışmaya başlamanın yolu.

PostgreSQL kurulumu için Windows'ta postgresql.org'daki resmî yükleyiciyi, macOS'ta Homebrew'u, Ubuntu'da apt paketini ya da Docker'da resmî postgres imajını kullanırsınız. Ardından postgres süper kullanıcısıyla bağlanıp uygulamanız için ayrı bir rol ve veritabanı oluşturur, bağlantıyı psql ya da pgAdmin ile doğrularsınız.
PostgreSQL Nedir, Neden Tercih Edilir?
PostgreSQL, kırk yıla yaklaşan geçmişi olan, açık kaynaklı ve ücretsiz bir ilişkisel veritabanı sistemidir. İşlem güvenliği (ACID), güçlü veri tipleri, JSONB desteği ve gelişmiş indeksleme seçenekleri sayesinde küçük projelerden yüksek trafikli uygulamalara kadar geniş bir yelpazede kullanılır.
Rezervasyon, stok, sipariş ya da ilan gibi tutarlılığın kritik olduğu verilerde PostgreSQL rahat bir seçimdir. Bir otel yazılımı ya da e-ticaret altyapısı gibi aynı kayda birden çok kişinin aynı anda dokunduğu sistemlerde işlem güvenliği bu yüzden önemlidir. Yerelde hızlıca PHP ve veritabanı denemek isteyenler için XAMPP kurulumu da pratik bir başlangıçtır. Benzer işlerde MySQL de sık kullanılır; iki sistemi karşılaştırmak isterseniz MySQL kurulumu rehberine göz atabilirsiniz.
Bu yazıda kurulumdan sonra ilk gün ihtiyaç duyacağınız her şeyi ele alıyoruz: rol ve veritabanı oluşturma, uzaktan bağlantı ayarları, yedekleme ve en sık karşılaşılan hata mesajları.
Kurulumdan Önce Gerekenler
Kuruluma başlamadan önce birkaç kararı netleştirmek sonradan yaşanacak sorunları azaltır. Özellikle canlı sunucuda hangi ana sürümü kullanacağınıza baştan karar verin; ana sürümler arası geçiş, yedek alıp geri yükleme ya da pg_upgrade gerektirir.
Yöntem seçimi de önemlidir. Geliştirme bilgisayarında Docker, projeler arasında farklı sürümleri çakışmadan çalıştırmanın en kolay yoludur. Canlı sunucuda ise işletim sisteminin paket yöneticisiyle kurulan servis; güvenlik güncellemelerini almak, logları izlemek ve otomatik başlatmayı yönetmek açısından daha öngörülebilir bir yapı sunar.
- Yönetici (Windows) ya da sudo (macOS, Linux) yetkisi olan bir kullanıcı
- Varsayılan 5432 portunun başka bir uygulama tarafından kullanılmıyor olması
- Resmî sitede desteklenen güncel ana sürüm bilgisi: postgresql.org
- Süper kullanıcı için güçlü, bir yere kaydettiğiniz bir parola
- Docker ile kuracaksanız çalışan bir Docker kurulumu
İşletim Sistemine Göre Kurulum
Aşağıdaki yöntemlerin her biri resmî ya da resmî olarak önerilen kaynaklardan kurulum yapar. Komutlardaki sürüm yer tutucusunu kendi seçtiğiniz ana sürümle değiştirin.
Windows
postgresql.org'un Windows sayfasından EDB tarafından hazırlanan yükleyiciyi indirin. Sihirbaz sunucuyu, pgAdmin'i, komut satırı araçlarını ve Stack Builder'ı birlikte kurar; sizden postgres kullanıcısının parolasını, portu ve yerel ayarı ister.
Kurulumdan sonra psql komutunu her terminalde kullanabilmek için bin klasörünü PATH değişkenine ekleyin. Başlat menüsündeki SQL Shell (psql) kısayolu da aynı işi görür.
# Klasör adı kurduğunuz ana sürüme göre değişir
$env:Path += ";C:\Program Files\PostgreSQL\<sürüm>\bin"
psql --version
psql -U postgres -h localhostmacOS (Homebrew)
Homebrew'da PostgreSQL sürüm numaralı paketlerle gelir. Önce mevcut paketleri listeleyin, ardından istediğiniz ana sürümü kurup servis olarak başlatın. Grafik arayüz tercih ederseniz Postgres.app da yaygın bir alternatiftir.
brew search postgresql
brew install postgresql@<sürüm>
brew services start postgresql@<sürüm>
# Sürüm numaralı paketler PATH'e otomatik eklenmeyebilir;
# kurulum çıktısındaki echo 'export PATH=...' satırını uygulayın
psql --version
psql postgresUbuntu ve Debian
Dağıtımın kendi deposundaki paket çoğu proje için yeterlidir. Daha yeni bir ana sürüm gerekiyorsa postgresql.org'un anlattığı PGDG deposunu ekleyerek kurabilirsiniz.
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl enable --now postgresql
sudo systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"Docker
Geliştirme ortamı için en temiz yol resmî postgres imajıdır; bilgisayarınıza kalıcı bir servis kurmadan veritabanını açıp kapatabilirsiniz. Verinin kaybolmaması için mutlaka bir adlandırılmış birim (volume) bağlayın.
- 18 ve sonrası resmî imajlarda birim /var/lib/postgresql yoluna bağlanır.
- 17 ve öncesi imajlarda birimi /var/lib/postgresql/data yoluna bağlayın; imajın Docker Hub sayfasındaki notu kontrol edin.
docker run -d --name pg \
-e POSTGRES_PASSWORD=GucluBirParola \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql \
postgres:<sürüm>
docker exec -it pg psql -U postgresKullanıcı ve Veritabanı Oluşturma
Kurulumla birlikte gelen postgres rolü süper kullanıcıdır; uygulamanızı bu rolle bağlamak güvenlik açısından doğru değildir. Her proje için yalnızca kendi veritabanında yetkili ayrı bir rol açın.
PostgreSQL'de kullanıcı ile rol aynı kavramdır: LOGIN yetkisi olan rol kullanıcı gibi davranır. Veritabanının sahibi yaptığınız rol, o veritabanındaki public şemada tablo oluşturabilir.
CREATE ROLE uygulama WITH LOGIN PASSWORD 'BurayaGucluParola';
CREATE DATABASE magaza OWNER uygulama ENCODING 'UTF8';
-- Salt okunur raporlama kullanıcısı
CREATE ROLE rapor WITH LOGIN PASSWORD 'BaskaGucluParola';
GRANT CONNECT ON DATABASE magaza TO rapor;
\c magaza
GRANT USAGE ON SCHEMA public TO rapor;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO rapor;
ALTER DEFAULT PRIVILEGES FOR ROLE uygulama IN SCHEMA public
GRANT SELECT ON TABLES TO rapor;En Çok Kullanılan psql Komutları
psql, PostgreSQL'in komut satırı istemcisidir. Ters eğik çizgiyle başlayan meta komutlar sunucuya SQL göndermez, istemcinin kendisi tarafından yorumlanır ve gezinmeyi çok hızlandırır.
| Komut | Ne yapar? |
|---|---|
| \l | Veritabanlarını listeler |
| \c magaza | magaza veritabanına geçer |
| \dt | Geçerli şemadaki tabloları listeler |
| \d urunler | Tablonun kolonlarını ve indekslerini gösterir |
| \du | Rolleri ve yetkilerini listeler |
| \x | Geniş satırları dikey gösterime çevirir |
| \timing | Sorgu sürelerini açar ya da kapatır |
| \? | Tüm meta komutların yardımını açar |
| \q | psql'den çıkar |
psql -h localhost -U uygulama -d magaza
# Bağlantı dizesiyle
psql "postgresql://uygulama@localhost:5432/magaza"pgAdmin ile Grafik Arayüzden Yönetim
pgAdmin, PostgreSQL için resmî ve ücretsiz yönetim aracıdır. Windows yükleyicisiyle birlikte gelir; macOS ve Linux'ta pgadmin.org üzerinden ayrıca kurulur ya da Docker imajıyla çalıştırılır.
İlk açılışta Register > Server adımıyla yeni bir sunucu tanımlayın: Connection sekmesine host olarak localhost, port 5432, kullanıcı ve parolayı girin. Bağlandıktan sonra tabloları gezebilir, Query Tool ile sorgu çalıştırabilir, yedek alma ve geri yükleme işlemlerini menüden yapabilirsiniz.
Uzaktaki bir sunucuya bağlanacaksanız veritabanı portunu internete açmak yerine pgAdmin'in SSH tüneli seçeneğini kullanmak daha güvenlidir.
Uzaktan Bağlantı ve Temel Ayarlar
PostgreSQL varsayılan olarak yalnızca yerel bağlantıları dinler. Ayar dosyalarının yeri işletim sistemine ve sürüme göre değiştiği için önce psql içinden konumlarını öğrenin.
postgresql.conf dosyasındaki listen_addresses değeri dinlenecek adresleri, pg_hba.conf ise hangi istemcinin hangi yöntemle doğrulanacağını belirler. Parolalı bağlantılarda scram-sha-256 yöntemini kullanın ve izin verdiğiniz IP aralığını olabildiğince dar tutun.
- shared_buffers: resmî dokümantasyon, ayrılmış bir sunucuda başlangıç için belleğin yaklaşık dörtte birini önerir.
- max_connections: yüksek tutmak yerine uygulama tarafında bağlantı havuzu kullanın.
- Yavaş sorguları bulmak için log_min_duration_statement ayarını açın ve EXPLAIN ANALYZE ile inceleyin.
SHOW config_file;
SHOW hba_file;
SHOW data_directory;# TYPE DATABASE USER ADDRESS METHOD
host magaza uygulama 203.0.113.10/32 scram-sha-256# pg_hba.conf değişikliği için yeniden yükleme yeterli
sudo systemctl reload postgresql
# listen_addresses değişikliği yeniden başlatma ister
sudo systemctl restart postgresqlYedekleme ve Sık Karşılaşılan Hatalar
Kurulum biter bitmez otomatik yedekleme planlayın. pg_dump tek bir veritabanının tutarlı bir kopyasını alır; özel biçimdeki yedek pg_restore ile seçerek geri yüklenebilir. Yedeği aynı sunucuda değil, başka bir konumda saklayın.
Veritabanı performansı, uygulamanın genel hızını doğrudan etkiler. Sorgu süreleri, indeksler ve sunucu yanıtı birlikte ele alındığında sonuç alınır; bu bütünlüklü yaklaşımı hız ve performans yönetimi çalışmalarımızda uyguluyoruz.
| Hata | Olası neden ve çözüm |
|---|---|
| Peer authentication failed | Ubuntu'da yerel soket bağlantısı peer yöntemini kullanır; -h localhost ekleyerek parolalı bağlanın. |
| Connection refused | Servis çalışmıyor ya da port farklı; systemctl status postgresql ve port ayarını kontrol edin. |
| password authentication failed | Parola ya da kullanıcı adı yanlış; ALTER ROLE ile parolayı yenileyin. |
| psql tanınmıyor | bin klasörü PATH'te değil; Windows'ta ortam değişkenine ekleyin. |
| permission denied for schema public | Rol veritabanının sahibi değil; sahipliği verin ya da şema yetkisi tanımlayın. |
pg_dump -h localhost -U uygulama -F c -f magaza.dump magaza
pg_restore -h localhost -U uygulama -d magaza --clean magaza.dumpSık Sorulan Sorular
01pgAdmin olmadan PostgreSQL kullanılabilir mi?
Evet. pgAdmin yalnızca bir yönetim arayüzüdür; sunucu ondan bağımsız çalışır. psql, kod editörlerinin veritabanı eklentileri ya da başka istemciler aynı işi görür.
02PostgreSQL mi MySQL mi seçmeliyim?
İki sistem de olgun ve güvenilirdir. Gelişmiş veri tipleri, JSONB ve karmaşık sorgular öne çıkıyorsa PostgreSQL, barındırma firmalarında hazır bulunması önemliyse MySQL çoğu zaman pratik gelir; karar projenin ihtiyacına göre verilmelidir.
03Python projemi PostgreSQL'e nasıl bağlarım?
En yaygın sürücü psycopg'dur; Django ve SQLAlchemy de bunu kullanır. Ortamınız hazır değilse önce Python kurulumu adımlarını tamamlayın, ardından sanal ortam içinde sürücüyü pip ile kurun.
04Ana sürüm yükseltmesi nasıl yapılır?
Ana sürümler arası geçişte veri dizini doğrudan kullanılamaz. Küçük veritabanlarında pg_dumpall ile yedek alıp yeni sürüme geri yüklemek, büyüklerde pg_upgrade aracı tercih edilir; her iki durumda da önce tam yedek alın.
PostgreSQL'i kurup ayrı rol, dar erişim kuralı ve düzenli yedekle çalıştırdığınızda sağlam bir temel atmış olursunuz. Veritabanı tasarımından sunucu kurulumuna kadar işi uçtan uca ele alan bir yazılım arıyorsanız Aurora çözümlerine göz atın ya da iletişim sayfasından bize ulaşın. Diğer adımlar için kurulum rehberleri kategorisine bakabilirsiniz.


