🐘 Ubuntu Üzerine PostgreSQL Kurulumu ve Yönetimi
💡 Bu Rehberde Ne Öğreneceksiniz
Bu kapsamlı kılavuzda, açık kaynaklı ilişkisel veritabanı yönetim sistemi olan PostgreSQL’i Ubuntu üzerinde kurmayı öğreneceksiniz. Kurulumdan sonra, rol tabanlı kimlik doğrulama, psql kullanımı, temel SQL komutları, performans konfigürasyonu ve yedekleme stratejileri gibi konuları ele alacağız.
⚙️ Adım 1 – PostgreSQL Kurulumu
Gereksinimler:
- Ubuntu 20.04 veya üzeri sürüm
- sudo yetkili kullanıcı
- İnternet bağlantısı
Paket dizinini güncelleyin:
sudo apt update
PostgreSQL ve ek araçlarını yükleyin:
sudo apt install postgresql postgresql-contrib
Kurulumun çalıştığını doğrulayın:
sudo systemctl status postgresql
“active (running)” çıktısı görüyorsanız servis aktif.
👤 Adım 2 – PostgreSQL Rolleri ve Kimlik Doğrulama
PostgreSQL, kullanıcı yönetimini roller aracılığıyla yapar. Kurulumla birlikte varsayılan olarak postgres adlı süper kullanıcı rolü oluşturulur.
Bu kullanıcıya geçiş yapın:
sudo -i -u postgres
Konsolu açın:
psql
Çıkış için:
\q
PostgreSQL, yerel bağlantılarda varsayılan olarak “peer authentication” kullanır; sistem kullanıcı adınızla aynı ada sahip bir PostgreSQL rolü varsa doğrudan giriş yapılır.
🧩 Adım 3 – Yeni Rol ve Veritabanı Oluşturma
Etkileşimli bir rol oluşturun:
sudo -u postgres createuser --interactive
Komut sizden kullanıcı adı ve süper yetki isteyecektir.
Yeni bir veritabanı oluşturun:
sudo -u postgres createdb rabisu_user
Ya da SQL ile manuel oluşturun:
CREATE ROLE rabisu_user WITH LOGIN PASSWORD 'guclu_parola';
CREATE DATABASE rabisu_db OWNER rabisu_user;
GRANT ALL PRIVILEGES ON DATABASE rabisu_db TO rabisu_user;
🗃️ Adım 4 – Tablo Oluşturma ve SQL İşlemleri
PostgreSQL’e bağlanın:
sudo -u rabisu_user psql -d rabisu_db
Örnek tablo oluşturun:
CREATE TABLE envanter (
id SERIAL PRIMARY KEY,
urun_adi VARCHAR(50),
miktar INT,
ekleme_tarihi DATE
);
Veri ekleyin:
INSERT INTO envanter (urun_adi, miktar, ekleme_tarihi)
VALUES ('Laptop', 5, CURRENT_DATE);
Verileri görüntüleyin:
SELECT * FROM envanter;
Veri güncelleyin:
UPDATE envanter SET miktar=10 WHERE urun_adi='Laptop';
Veri silin:
DELETE FROM envanter WHERE urun_adi='Laptop';
⚙️ Adım 5 – Performans ve Konfigürasyon
postgresql.conf dosyasını düzenleyerek sistem performansını artırabilirsiniz:
sudo nano /etc/postgresql/*/main/postgresql.conf
| Parametre | Açıklama | Öneri |
|---|---|---|
| shared_buffers | Bellek önbelleği | RAM’in %25’i |
| work_mem | Sorgu başına bellek | 16MB |
| maintenance_work_mem | Bakım görevleri için | 256MB |
Değişiklikleri uygulamak için:
sudo systemctl reload postgresql
Ek olarak:
- Büyük tablolar sonrası
VACUUM ANALYZEçalıştırın. - Bağlantı yükünü azaltmak için PgBouncer kullanın.
🛡️ Adım 6 – Yedekleme ve Geri Yükleme
Tek Veritabanı Yedekleme:
pg_dump -U postgres -F c -f proje_db.dump proje_db
Yedek Geri Yükleme:
pg_restore -U postgres -d postgres --create --clean -j 4 proje_db.dump
Tüm Veritabanlarını Yedekleme:
pg_dumpall -U postgres > tum_veriler.sql
Tümünü Geri Yükleme:
psql -U postgres -f tum_veriler.sql
Yedekleme işlemleri için düzenli cron job tanımlamak önerilir.
❓ Sıkça Sorulan Sorular (SSS)
1. PostgreSQL hangi Ubuntu sürümlerinde desteklenir?
20.04, 22.04, 24.04 ve 25.04 sürümleriyle uyumludur.
2. Veritabanımı nasıl yedeklerim?
pg_dump komutu ile sıkıştırılmış yedek oluşturabilirsiniz.
3. PostgreSQL neden tercih edilmeli?
JSONB, ACID uyumluluğu, PostGIS, paralel sorgu ve açık kaynak desteğiyle kurumsal düzeyde bir çözümdür.
4. Performansı nasıl artırabilirim?
Bellek ayarlarını optimize edin, gereksiz indeksleri kaldırın, düzenli bakım komutları çalıştırın.
5. psql komutu bulunamadı hatası ne anlama gelir?
PATH değişkeniniz PostgreSQL bin dizinini içermiyor olabilir. /usr/bin/psql yolunu doğrudan kullanın.
🏁 Sonuç
Artık Ubuntu üzerinde PostgreSQL kurulumu, kullanıcı yönetimi ve SQL işlemleri konusunda tam hakimiyete sahipsiniz 🎉 Veritabanınızı güvenli, performanslı ve düzenli hale getirmek için öğrendiğiniz komutları sisteminize entegre edin.
💡 Daha yüksek performanslı bir altyapı için Rabisu Bulut PostgreSQL Sunucuları üzerinde bu adımları deneyebilirsiniz!