PostgreSQL Kurulum ve Temel Yönetim Rehberi
PostgreSQL kurulumu, kullanıcı ve veritabanı oluşturma, temel SQL komutları, uzak bağlantı yapılandırması ve yedekleme. Ubuntu/Debian ve RHEL/CentOS için adım adım rehber.
İçindekiler
PostgreSQL Kurulum ve Temel Yönetim Rehberi
PostgreSQL, dünya genelinde en güçlü açık kaynaklı ilişkisel veritabanı yönetim sistemlerinden biridir. ACID uyumluluğu, gelişmiş veri tipleri, JSON desteği ve güçlü genişletilebilirliği ile kurumsal uygulamalardan küçük projelere kadar geniş bir kullanım alanına sahiptir. Bu rehberde PostgreSQL kurulumunu, temel yönetimini ve yapılandırmasını ele alacağız.
Ubuntu/Debian Üzerine Kurulum
Paket Deposundan Kurulum
Ubuntu ve Debian sistemlerde PostgreSQL resmi depolardan kurulabilir:
# Paket listesini güncelle
apt update
# PostgreSQL kur
apt install -y postgresql postgresql-contrib
# Servis durumunu kontrol et
systemctl status postgresql
# Otomatik başlatmayı etkinleştir
systemctl enable postgresql
PostgreSQL Resmi Deposunu Kullanma
Daha güncel sürüm için resmi PostgreSQL deposunu ekleyebilirsiniz:
# Gerekli araçları kur
apt install -y curl ca-certificates
# PostgreSQL imza anahtarını ekle
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
# Depoyu ekle
echo 'deb https://apt.postgresql.org/pub/repos/apt '$(lsb_release -cs)'-pgdg main' > /etc/apt/sources.list.d/pgdg.list
# Güncelle ve kur
apt update
apt install -y postgresql-16
RHEL/CentOS/AlmaLinux Üzerine Kurulum
# PostgreSQL resmi deposunu ekle
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Sistem PostgreSQL modülünü devre disi birak
dnf -qy module disable postgresql
# PostgreSQL 16 kur
dnf install -y postgresql16-server postgresql16-contrib
# Veritabanini ilklendir
/usr/pgsql-16/bin/postgresql-16-setup initdb
# Servisi baslat ve etkinlestir
systemctl enable --now postgresql-16
# Servis durumunu kontrol et
systemctl status postgresql-16
PostgreSQL Sürümünü Doğrulama
psql --version
# Cikti: psql (PostgreSQL) 16.x
# Servis bilgisi
psql -U postgres -c 'SELECT version();'
postgres Kullanicisina Gecis ve Baglanti
PostgreSQL kurulumunda sistem kullanicisi olarak postgres olusturulur. Veritabanina baglanmak icin:
# postgres sistem kullanicisina gec
su - postgres
# PostgreSQL konsoluna baglan
psql
# Dogrudan psql'e baglan (root olarak)
sudo -u postgres psql
# Belirli bir veritabanina baglan
sudo -u postgres psql -d mydb
Kullanici ve Veritabani Olusturma
Yeni Kullanici Olusturma
-- PostgreSQL konsolunda
-- Yeni kullanici olustur
CREATE USER appuser WITH PASSWORD 'GucluSifre123!';
-- Superuser yetkisi ver (dikkatli kullanin)
CREATE USER adminuser WITH PASSWORD 'AdminSifre!' SUPERUSER;
-- Kullanicilari listele
\du
-- Kullanici sifresini degistir
ALTER USER appuser WITH PASSWORD 'YeniSifre456!';
-- Kullaniciya veritabani olusturma yetkisi ver
ALTER USER appuser CREATEDB;
Veritabani Olusturma ve Yetkilendirme
-- Veritabani olustur
CREATE DATABASE myapp OWNER appuser ENCODING 'UTF8' LC_COLLATE 'tr_TR.UTF-8' LC_CTYPE 'tr_TR.UTF-8' TEMPLATE template0;
-- Veritabanlarini listele
\l
-- Veritabanina baglan
\c myapp
-- Kullaniciya tam yetki ver
GRANT ALL PRIVILEGES ON DATABASE myapp TO appuser;
-- Schema yetkisi (PostgreSQL 15+)
GRANT ALL ON SCHEMA public TO appuser;
-- Veritabanini sil
DROP DATABASE eski_veritabani;
Temel SQL Komutlari
-- Tablo olustur
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Veri ekle
INSERT INTO users (username, email) VALUES ('ahmet', 'ahmet@example.com');
-- Veri sorgula
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;
-- Veri guncelle
UPDATE users SET email = 'yeni@example.com' WHERE id = 1;
-- Veri sil
DELETE FROM users WHERE id = 5;
-- Tablolari listele
\dt
-- Tablo yapisini goruntule
\d users
-- Indeks olustur
CREATE INDEX idx_users_email ON users(email);
Uzak Baglanti Yapilandirmasi
Varsayilan olarak PostgreSQL sadece localhost'tan baglanti kabul eder. Uzak erisim icin iki dosyayi duzenlemeniz gerekir.
1. postgresql.conf Duzenleme
# Dosya konumunu bul
sudo -u postgres psql -c 'SHOW config_file;'
# Duzenle
nano /etc/postgresql/16/main/postgresql.conf
# listen_addresses satirini degistir
listen_addresses = '*'
# Port (varsayilan 5432)
port = 5432
2. pg_hba.conf Duzenleme
nano /etc/postgresql/16/main/pg_hba.conf
# Uzak baglanti icin satir ekle (dosyanin sonuna)
# TYPE DATABASE USER ADDRESS METHOD
host myapp appuser 192.168.1.0/24 scram-sha-256
host all all 0.0.0.0/0 scram-sha-256
3. Servisi Yeniden Baslat ve Firewall
# Servisi yeniden baslat
systemctl restart postgresql
# UFW ile port ac
ufw allow 5432/tcp
# iptables ile
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
PostgreSQL portunu (5432) internete acmak guvenlik riski olusturur. Mumkunse SSH tuneli veya VPN kullanin. Uzak erisim gerekiyorsa belirli IP adreslerine kisitlayin.
Yedekleme ve Geri Yukleme
pg_dump ile Yedekleme
# Tek veritabanini yedekle
pg_dump -U postgres myapp > myapp_backup.sql
# Sikistirilmis format (daha hizli geri yukleme)
pg_dump -U postgres -Fc myapp > myapp_backup.dump
# Tum veritabanlarini yedekle
pg_dumpall -U postgres > all_databases.sql
# Uzak sunucudan yedekle
pg_dump -h 192.168.1.100 -U postgres myapp > myapp_remote.sql
Yedekten Geri Yukleme
# SQL formatindan geri yukle
psql -U postgres myapp < myapp_backup.sql
# Sikistirilmis formattan geri yukle
pg_restore -U postgres -d myapp myapp_backup.dump
# Tum veritabanlarini geri yukle
psql -U postgres < all_databases.sql
Otomatik Yedekleme (Cron)
# Crontab duzenle
crontab -e
# Her gece 02:00'de yedek al
0 2 * * * pg_dump -U postgres myapp | gzip > /backup/myapp_$(date +\%Y\%m\%d).sql.gz
# 30 gunden eski yedekleri sil
0 3 * * * find /backup -name 'myapp_*.sql.gz' -mtime +30 -delete
Servis Yonetimi
# Servisi baslat
systemctl start postgresql
# Servisi durdur
systemctl stop postgresql
# Servisi yeniden baslat
systemctl restart postgresql
# Yapilandirmayi yeniden yukle (restart gerektirmez)
systemctl reload postgresql
# Logları goruntule
journalctl -u postgresql -f
tail -f /var/log/postgresql/postgresql-16-main.log
Sonuc
PostgreSQL, guvenilir ve yuksek performansli bir veritabani sistemidir. Kurulum sonrasi guvenlik yapilandirmasini ihmal etmeyin, duzzenli yedekleme yapın ve uzak erisim icin mutlaka kimlik dogrulama yontemlerini dogru yapilandirin. REXE sunucularinda PostgreSQL sorunsuz calisir ve yuksek trafik altinda guvenilir performans sunar.
İlgili Makaleler
MySQL ve MariaDB Kurulumu: Temel Yönetim Rehberi
MySQL ve MariaDB kurulumu, mysql_secure_installation, veritabanı ve kullanıcı oluşturma, temel SQL komutları, uzak erişim yapılandırması ve performans ayarları. Adım adım rehber.
Redis ve Memcached Kurulumu: Cache Katmanı Rehberi
Redis ve Memcached kurulumu, temel komutlar, persistence ayarları, Redis vs Memcached karşılaştırması ve uygulama entegrasyonu. Adım adım cache katmanı rehberi.
phpMyAdmin Kurulumu ve Güvenli Erişim Rehberi
phpMyAdmin kurulumu, Apache ve Nginx yapılandırması, SSL ile güvenli erişim, kullanıcı yönetimi ve güvenlik sertleştirme adımları. Adım adım rehber.