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.
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.
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 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
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
# 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
psql --version
# Cikti: psql (PostgreSQL) 16.x
# Servis bilgisi
psql -U postgres -c 'SELECT version();'
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
-- 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 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;
-- 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);
Varsayilan olarak PostgreSQL sadece localhost'tan baglanti kabul eder. Uzak erisim icin iki dosyayi duzenlemeniz gerekir.
# 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
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
# 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.
# 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
# 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
# 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
# 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
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.
PostgreSQL tam ACID uyumlu, gelismis veri tipleri (JSON, JSONB, diziler, hstore), window fonksiyonlari ve guclu genisletilebilirlik sunar. MySQL genel olarak daha basit kurulum ve yonetim sunarken PostgreSQL karmasik sorgular ve buyuk veri setlerinde daha iyi performans gosterir. Yeni projeler icin PostgreSQL onerilir.
sudo -u postgres psql komutuyla PostgreSQL konsoluna baglanin, ardindan ALTER USER postgres WITH PASSWORD 'YeniSifre'; komutunu calistirin. Sistem kullanicisi sifresini degistirmek icin ise sudo passwd postgres komutunu kullanin.
Uc seyi kontrol edin: 1) postgresql.conf dosyasinda listen_addresses = '*' oldugunu dogrulayin, 2) pg_hba.conf dosyasina ilgili IP icin host satiri eklediginiizi kontrol edin, 3) Firewall'da 5432 portunun acik oldugunu dogrulayin (ufw status veya iptables -L). Degisikliklerden sonra servisi yeniden baslatmayi unutmayin.
pg_dump, tutarli bir anlık goruntu alir ve cok guvenilirdir. Buyuk veritabanlari icin -Fc (ozel format) kullanin; bu format paralel geri yukleme destekler ve daha kucuk dosya boyutu saglar. Kritik sistemler icin WAL arsivleme veya streaming replikasyon gibi daha gelismis yedekleme yontemlerini de degerlendirin.
PostgreSQL varsayilan olarak 5432 portunu kullanir. Degistirmek icin /etc/postgresql/16/main/postgresql.conf dosyasindaki port = 5432 satirini istediginiz port numarasiyla guncelleyin ve servisi yeniden baslatın. pg_hba.conf ve baglanti dizelerinizi de guncellemeyi unutmayin.
Evet, her surum farkli bir portta calisabilir. Ornegin PostgreSQL 14 varsayilan 5432 portunda, PostgreSQL 16 ise 5433 portunda calisabilir. Her surum kendi veri dizinine ve servis birimine sahiptir. pg_lsclusters komutuyla mevcut tum kumeleri listeleyebilirsiniz.
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, temel komutlar, persistence ayarları, Redis vs Memcached karşılaştırması ve uygulama entegrasyonu. Adım adım cache katmanı 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.