15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
30.10.2024
1 +1

PostgreSQL Veritabanına Nasıl Bağlanılır: Tüm Yöntemler için Eksiksiz Kılavuz

PostgreSQL, güvenilirlik, esneklik ve yüksek performans konusunda sağlam bir itibar kazanmış güçlü, özellik açısından zengin, açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir (RDBMS). Hafif web uygulamalarından karmaşık kurumsal düzeydeki sistemlere kadar PostgreSQL, dünya genelinde geliştiriciler, veri mühendisleri ve veritabanı yöneticilerinin tercih ettiği çözümdür. Sağlam mimarisi, gelişmiş SQL uyumluluğu ve olağanüstü genişletilebilirliği, onu günümüzde mevcut en güvenilir veritabanı platformlarından biri yapmaktadır.

İster bir VPS Hosting ortamında yeni bir proje kuruyorsanız, ister bir Dedicated Server üzerinde üretim veritabanı yönetiyorsanız, bir PostgreSQL veritabanına nasıl bağlanacağınızı anlamak kesinlikle temel bir beceridir. Doğru yapılandırılmış bir bağlantı, güvenli erişim, optimum performans ve verimli veritabanı yönetimi sağlar; sorgular çalıştırmadan, veri içe/dışa aktarmadan, kullanıcı rollerini yönetmeden veya veritabanınızı uygulamalarla entegre etmeden önce atılması gereken ilk adımdır.

Bu kapsamlı kılavuz, PostgreSQL’e bağlanmanın tüm önemli yöntemlerini kapsamaktadır: komut satırı arayüzü (CLI), grafiksel GUI araçları ve Python ile Node.js kullanarak programatik bağlantılar.

İçindekiler

  1. PostgreSQL’e Bağlanmak İçin Ön Koşullar
  2. Komut Satırı Arayüzü (psql) Üzerinden Bağlanma
  3. Grafiksel Araçlar Kullanarak Bağlanma (pgAdmin & DBeaver)
  4. PostgreSQL’e Programatik Olarak Bağlanma
  5. Yaygın Bağlantı Hataları ve Çözüm Yolları
  6. PostgreSQL Bağlantıları İçin Güvenlik En İyi Uygulamaları

1. PostgreSQL’e Bağlanmak İçin Ön Koşullar

Herhangi bir bağlantı denemesinden önce aşağıdaki ön koşulların sağlandığını doğrulayın:

PostgreSQL Kurulu ve Çalışıyor Olmalıdır

PostgreSQL’in yerel makinenizde kurulu olduğundan veya uzak bir PostgreSQL sunucusuna ağ erişiminizin bulunduğundan emin olun. Servisin çalıştığını şu komutla doğrulayabilirsiniz:

# On Linux (systemd-based)
sudo systemctl status postgresql

# On macOS (Homebrew)
brew services list | grep postgresql

# On Windows
sc query postgresql

Gerekli Erişim Kimlik Bilgileri

Bu kılavuzda ele alınan her bağlantı yöntemi için aşağıdaki bilgilere ihtiyaç duyacaksınız:

ParametreAçıklamaVarsayılan Değer
HostSunucu ana bilgisayar adı veya IP adresilocalhost veya 127.0.0.1
PortPostgreSQL’in dinlediği port5432
UsernamePostgreSQL kullanıcı hesabıpostgres
PasswordBelirtilen kullanıcının parolası*(kurulum sırasında belirlenir)*
Database NameBağlanılacak hedef veritabanıpostgres

Ağ ve Güvenlik Duvarı Erişimi

Uzak bağlantılar için şunları sağlayın:

  • 5432 portu sunucunuzun güvenlik duvarı kurallarında açık olmalıdır.
  • PostgreSQL yapılandırma dosyası pg_hba.conf IP adresinizden gelen bağlantılara izin vermelidir.
  • postgresql.conf dosyasında listen_addresses uygun şekilde ayarlanmış olmalıdır (örn. tüm arayüzler için '*' veya belirli bir IP).

2. Komut Satırı Arayüzü (CLI) Üzerinden PostgreSQL’e Bağlanma

psql komut satırı aracı, PostgreSQL ile etkileşim kurmanın en doğrudan ve evrensel olarak kullanılabilir yöntemidir. Her standart PostgreSQL kurulumunda önceden yüklü olarak gelir ve sistem yöneticileri ile ileri düzey kullanıcıların tercih ettiği araçtır.

Adım 1: Terminal veya Komut İstemini Açın

  • Linux / macOS: Terminal uygulamanızı açın.
  • Windows: Komut İstemi, PowerShell veya Windows Terminal’i açın. PostgreSQL bin dizininin sistem PATH değişkeninize eklendiğinden emin olun.

Adım 2: psql Bağlantı Sözdizimini Kullanın

Standart psql bağlantı sözdizimi şöyledir:

psql -h host -p port -U username -d database

Parametre açıklaması:

  • -h host — Sunucunun ana bilgisayar adı veya IP adresi (örn. yerel için localhost veya 192.168.1.100 gibi uzak bir IP).
  • -p port — PostgreSQL’in dinlediği port (varsayılan: 5432).
  • -U username — Kimlik doğrulaması yapılacak PostgreSQL kullanıcı adı.
  • -d database — Bağlanmak istediğiniz veritabanının adı.

Adım 3: Pratik Bir Bağlantı Örneği Çalıştırın

Yerel makinenizde postgres süper kullanıcısı olarak mydb adlı bir veritabanına bağlanmak için:

psql -h localhost -p 5432 -U postgres -d mydb

Parola girmeniz istenecektir. Başarılı kimlik doğrulamasının ardından psql kabuk istemini göreceksiniz:

mydb=#

Adım 4: psql Kabuğunda Sorgular Çalıştırın

psql kabuğuna girdikten sonra doğrudan herhangi bir SQL sorgusu çalıştırabilirsiniz:

-- Check the PostgreSQL server version
SELECT version();

-- List all databases
l

-- List all tables in the current database
dt

-- Run a query
SELECT * FROM my_table;

-- Describe a table's structure
d my_table

Adım 5: psql Kabuğundan Çıkın

Bağlantıyı kapatmak ve psql‘den çıkmak için:

q

Bağlantı Dizesi Kullanma (URI Formatı)

PostgreSQL ayrıca betik yazımı için kullanışlı olan URI dizesi üzerinden bağlantıyı da destekler:

psql "postgresql://postgres:your_password@localhost:5432/mydb"

PGPASSWORD Ortam Değişkenini Kullanma

Otomatik betiklerde parola istenmesini önlemek için:

export PGPASSWORD='your_password'
psql -h localhost -p 5432 -U postgres -d mydb

> Güvenlik Notu: Kabuk betiklerinde PGPASSWORD kullanmak, kimlik bilgilerini işlem listelerinde açığa çıkarabilir. Üretim ortamları için bunun yerine .pgpass dosyası kullanın (Güvenlik En İyi Uygulamaları bölümünde ele alınmaktadır).

3. Grafiksel Araçlar Kullanarak PostgreSQL’e Bağlanma

Görsel arayüzü tercih eden kullanıcılar için, komut satırı sözdizimini ezberlemeden PostgreSQL veritabanlarına bağlanmayı, sorgu çalıştırmayı ve yönetmeyi kolaylaştıran mükemmel GUI istemcileri mevcuttur.

3.1 pgAdmin — Resmi PostgreSQL GUI’si

pgAdmin, PostgreSQL için resmi, açık kaynaklı yönetim ve yönetim aracıdır. SQL sorguları çalıştırmak, veritabanı nesnelerini yönetmek, performansı izlemek ve verileri görselleştirmek için kapsamlı web tabanlı ve masaüstü arayüzü sağlar.

#### pgAdmin ile Nasıl Bağlanılır

Adım 1: pgAdmin’i İndirin ve Kurun

En son sürümü resmi pgAdmin web sitesinden indirin. Windows, macOS ve Linux için kurulum paketleri mevcuttur.

Adım 2: pgAdmin’i Başlatın

pgAdmin’i açın. Varsayılan web tarayıcınızda (masaüstü sürümü için) veya bağımsız bir uygulama olarak başlayacaktır.

Adım 3: Yeni Bir Sunucu Bağlantısı Oluşturun

  1. Sol kenar çubuğunda Servers üzerine sağ tıklayın.
  2. Create → Server… seçeneğini seçin.

Adım 4: General Sekmesini Yapılandırın

  • Name: Bu bağlantı için açıklayıcı bir ad girin (örn. Production DB veya Local Development).

Adım 5: Connection Sekmesini Yapılandırın

Aşağıdaki alanları doldurun:

AlanDeğer
Host name/addresslocalhost (veya uzak IP/ana bilgisayar adı)
Port5432
Maintenance databasepostgres
Usernamepostgres
PasswordPostgreSQL kullanıcı parolanız

İsteğe bağlı olarak, geliştirme ortamlarında kolaylık sağlamak için Save password seçeneğini işaretleyebilirsiniz.

Adım 6: Kaydedin ve Bağlanın

Save‘e tıklayın. pgAdmin hemen bağlanmaya çalışacaktır. Başarı durumunda sunucunuz sol kenar çubuğunda görünecek ve veritabanlarına, şemalara, tablolara ve daha fazlasına göz atmak için genişletebileceksiniz.

Adım 7: Sorgu Çalıştırın

Herhangi bir veritabanına sağ tıklayın ve SQL düzenleyicisini açmak için Query Tool‘u seçin. Sorgu yazıp çalıştırabilir, sonuçları görüntüleyebilir ve verileri doğrudan arayüzden dışa aktarabilirsiniz.

3.2 DBeaver — Evrensel Veritabanı İstemcisi

DBeaver, PostgreSQL dahil 80’den fazla veritabanı sistemini destekleyen ücretsiz, açık kaynaklı, çapraz platform bir veritabanı yönetim aracıdır. Özellikle birden fazla veritabanı türüyle çalışan ve gelişmiş veri görselleştirme, ER diyagramı oluşturma ve veri dışa aktarma özelliklerine ihtiyaç duyan geliştiriciler arasında popülerdir.

#### DBeaver ile Nasıl Bağlanılır

Adım 1: DBeaver’ı İndirin ve Kurun

DBeaver Community Edition’ı (ücretsiz) resmi DBeaver web sitesinden indirin. Windows, macOS ve Linux için mevcuttur.

Adım 2: Yeni Bir Veritabanı Bağlantısı Oluşturun

  1. DBeaver’ı açın.
  2. Üst araç çubuğundaki New Database Connection düğmesine (fiş simgesi) tıklayın veya Database → New Database Connection yolunu izleyin.

Adım 3: Veritabanı Türü Olarak PostgreSQL’i Seçin

Desteklenen veritabanları listesinden PostgreSQL‘i seçin ve Next‘e tıklayın.

Adım 4: Bağlantı Bilgilerinizi Girin

Bağlantı formunu doldurun:

AlanDeğer
Hostlocalhost veya uzak IP/ana bilgisayar adı
Port5432
Databasemydb (veya hedef veritabanınız)
Usernamepostgres
PasswordPostgreSQL kullanıcı parolanız

Adım 5: Bağlantıyı Test Edin

Test Connection‘a tıklayın. DBeaver bağlanmayı deneyecek ve başarı veya hata mesajı gösterecektir. PostgreSQL’i DBeaver ile ilk kez kullanıyorsanız, gerekli JDBC sürücüsünü indirmeniz istenebilir — otomatik olarak devam etmek için Download‘a tıklayın.

Adım 6: Tamamlayın ve Veritabanınızı Yönetmeye Başlayın

Finish‘e tıklayın. PostgreSQL bağlantınız sol taraftaki Database Navigator panelinde görünecektir. Artık tabloları gezebilir, SQL düzenleyicisinde SQL sorguları çalıştırabilir, veri içe/dışa aktarabilir ve ER diyagramları oluşturabilirsiniz.

4. PostgreSQL’e Programatik Olarak Bağlanma

Uygulama kodundan PostgreSQL’e bağlanmak, en yaygın gerçek dünya kullanım senaryolarından biridir. Aşağıda en popüler iki dil için üretime hazır örnekler verilmiştir: Python ve Node.js.

4.1 Python — psycopg2 Kullanımı

psycopg2, Python için en yaygın kullanılan PostgreSQL adaptörüdür. Hızlı, iş parçacığı güvenli ve Python DB-API 2.0 spesifikasyonuyla tam uyumludur.

#### psycopg2’yi Kurun

pip install psycopg2

Kaynaktan derlemenin istenmediği ortamlar için ikili paketi kullanın:

pip install psycopg2-binary

#### psycopg2 ile PostgreSQL’e Bağlanın

import psycopg2
from psycopg2 import OperationalError

def create_connection():
    connection = None
    try:
        connection = psycopg2.connect(
            user="postgres",
            password="your_password",
            host="127.0.0.1",
            port="5432",
            database="mydb"
        )
        print("Connection to PostgreSQL successful.")
    except OperationalError as e:
        print(f"The error '{e}' occurred.")
    return connection

def execute_query(connection, query):
    cursor = connection.cursor()
    try:
        cursor.execute(query)
        connection.commit()
        print("Query executed successfully.")
    except Exception as e:
        print(f"The error '{e}' occurred.")
    finally:
        cursor.close()

# Establish the connection
conn = create_connection()

# Execute a sample query
if conn:
    execute_query(conn, "SELECT version();")

    # Fetch and display results
    cursor = conn.cursor()
    cursor.execute("SELECT version();")
    record = cursor.fetchone()
    print(f"PostgreSQL server version: {record[0]}")

    # Close the connection
    cursor.close()
    conn.close()
    print("PostgreSQL connection closed.")

#### psycopg2 ile Bağlantı URI’si Kullanımı

import psycopg2

DATABASE_URL = "postgresql://postgres:your_password@127.0.0.1:5432/mydb"

connection = psycopg2.connect(DATABASE_URL)
cursor = connection.cursor()
cursor.execute("SELECT current_database();")
print(cursor.fetchone())
connection.close()

4.2 Node.js — pg Paketini Kullanma

node-postgres (pg) paketi, Node.js için standart PostgreSQL istemcisidir. Hem geri çağırma tabanlı hem de async/await desenlerini destekler ve pg.Pool aracılığıyla bağlantı havuzu desteği içerir.

#### pg Paketini Kurun

npm install pg

#### Tek İstemci Kullanarak Bağlanın (async/await)

const { Client } = require('pg');

const client = new Client({
  host: 'localhost',
  port: 5432,
  user: 'postgres',
  password: 'your_password',
  database: 'mydb',
});

async function connectAndQuery() {
  try {
    await client.connect();
    console.log('Connected to PostgreSQL successfully.');

    const result = await client.query('SELECT version()');
    console.log('PostgreSQL version:', result.rows[0].version);

    const tableResult = await client.query('SELECT * FROM my_table LIMIT 10');
    console.log('Query results:', tableResult.rows);

  } catch (err) {
    console.error('Connection error:', err.message);
  } finally {
    await client.end();
    console.log('PostgreSQL connection closed.');
  }
}

connectAndQuery();

#### Bağlantı Havuzu Kullanarak Bağlanın (Üretim İçin Önerilir)

Üretim uygulamaları için, birden fazla eşzamanlı veritabanı bağlantısını verimli şekilde yönetmek amacıyla her zaman bir bağlantı havuzu kullanın:

const { Pool } = require('pg');

const pool = new Pool({
  host: 'localhost',
  port: 5432,
  user: 'postgres',
  password: 'your_password',
  database: 'mydb',
  max: 20,               // Maximum number of connections in the pool
  idleTimeoutMillis: 30000,
  connectionTimeoutMillis: 2000,
});

async function queryDatabase(sql, params = []) {
  const client = await pool.connect();
  try {
    const result = await client.query(sql, params);
    return result.rows;
  } catch (err) {
    console.error('Query error:', err.message);
    throw err;
  } finally {
    client.release(); // Always release the client back to the pool
  }
}

// Example usage
(async () => {
  const rows = await queryDatabase('SELECT * FROM my_table WHERE id = $1', [1]);
  console.log(rows);
})();

#### Node.js ile Bağlantı Dizesi Kullanımı

const { Client } = require('pg');

const client = new Client({
  connectionString: 'postgresql://postgres:your_password@localhost:5432/mydb',
});

client.connect()
  .then(() => client.query('SELECT NOW()'))
  .then(res => console.log('Current time:', res.rows[0]))
  .catch(err => console.error('Error:', err))
  .finally(() => client.end());

5. Yaygın PostgreSQL Bağlantı Hataları ve Çözüm Yolları

Deneyimli yöneticiler bile bağlantı sorunlarıyla karşılaşabilir. İşte en yaygın hatalar ve çözümleri:

Hata: FATAL: role "postgres" does not exist

Neden: Belirtilen PostgreSQL kullanıcısı sunucuda mevcut değildir.

Çözüm:

# Create the user via the system's postgres account
sudo -u postgres createuser --superuser postgres

Hata: could not connect to server: Connection refused

Neden: PostgreSQL çalışmıyor veya beklenen host/port üzerinde dinlemiyor.

Çözüm:

# Start PostgreSQL
sudo systemctl start postgresql

# Verify it is listening on port 5432
sudo ss -tlnp | grep 5432

Ayrıca listen_addresses‘nin doğru yapılandırıldığından emin olmak için postgresql.conf‘yi kontrol edin.

Hata: FATAL: pg_hba.conf rejects connection

Neden: pg_hba.conf dosyasında bağlantınıza izin veren bir giriş bulunmuyor.

Çözüm: /etc/postgresql/<version>/main/pg_hba.conf‘yi düzenleyin ve uygun bir kural ekleyin:

# Allow local connections with password authentication
host    all             all             127.0.0.1/32            md5

# Allow connections from a specific remote subnet
host    all             all             192.168.1.0/24          md5

Düzenledikten sonra PostgreSQL’i yeniden yükleyin:

sudo systemctl reload postgresql

Hata: FATAL: password authentication failed

Neden: Belirtilen kullanıcı için yanlış parola.

Çözüm: PostgreSQL içinden parolayı sıfırlayın:

ALTER USER postgres WITH PASSWORD 'new_secure_password';

Hata: SSL connection required

Neden: Sunucu SSL/TLS şifreli bağlantı gerektiriyor.

Çözüm: Bağlantı dizenize sslmode=require ekleyin veya SSL’yi düzgün şekilde yapılandırın. Sunucunuz için güvenilir bir SSL sertifikasına ihtiyaç duyuyorsanız, veritabanı bağlantılarınızı uçtan uca güvence altına almak için SSL Certificates seçeneğini değerlendirin.

6. PostgreSQL Bağlantıları İçin Güvenlik En İyi Uygulamaları

PostgreSQL bağlantılarınızı güvence altına almak, bağlantı kurmak kadar önemlidir. Her ortamda bu en iyi uygulamaları takip edin:

Güçlü, Benzersiz Parolalar Kullanın

Tüm PostgreSQL kullanıcıları için her zaman güçlü parolalar belirleyin. Uygulama bağlantıları için varsayılan postgres süper kullanıcısını kullanmaktan kaçının — minimum gerekli ayrıcalıklara sahip özel kullanıcılar oluşturun.

-- Create a dedicated application user with limited privileges
CREATE USER app_user WITH PASSWORD 'StrongP@ssw0rd!2024';
GRANT CONNECT ON DATABASE mydb TO app_user;
GRANT USAGE ON SCHEMA public TO app_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;

Ortam Değişkenleri Yerine .pgpass Dosyasını Kullanın

Kabuk geçmişinde veya işlem listelerinde parolaların açığa çıkmasını önlemek için kimlik bilgilerini güvenli bir şekilde .pgpass dosyasında saklayın:

# Create the file
echo "localhost:5432:mydb:postgres:your_password" >> ~/.pgpass

# Set correct permissions (required by PostgreSQL)
chmod 600 ~/.pgpass

Uzak Bağlantılar İçin Her Zaman SSL/TLS Kullanın

Veritabanı kimlik bilgilerini veya sorgu verilerini hiçbir zaman şifrelenmemiş bağlantılar üzerinden iletmeyin. PostgreSQL’i SSL gerektirecek şekilde yapılandırın:

# In postgresql.conf
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
# In pg_hba.conf — require SSL for all remote connections
hostssl    all    all    0.0.0.0/0    md5

pg_hba.conf Aracılığıyla Erişimi Kısıtlayın

Ağ erişiminde en az ayrıcalık ilkesini uygulayın. Yalnızca bilinen, güvenilir IP adreslerinden veya alt ağlardan gelen bağlantılara izin verin.

Üretimde Bağlantı Havuzu Kullanın

PgBouncer veya pg.Pool (Node.js) içindeki yerleşik havuzlama gibi araçlar, yeni bağlantı kurma yükünü azaltır ve bağlantı tükenme saldırılarına karşı koruma sağlar.

PostgreSQL’i Güncel Tutun

Güvenlik yamalarından ve performans iyileştirmelerinden yararlanmak için her zaman PostgreSQL’in en son kararlı sürümünü çalıştırın.

PostgreSQL İçin Doğru Hosting Ortamını Seçme

PostgreSQL veritabanınızın performansı ve güvenilirliği büyük ölçüde temel altyapıya bağlıdır. Değerlendirmeniz gereken en iyi hosting seçenekleri şunlardır:

  • VPS Hosting — Geliştirme ortamları, küçük-orta ölçekli üretim veritabanları ve PostgreSQL’i tam olarak istedikleri gibi yapılandırmak için tam root erişimine ihtiyaç duyan ekipler için idealdir.
  • Dedicated Servers — Kaynak paylaşımı olmaksızın maksimum CPU, RAM ve I/O performansı gerektiren yüksek trafikli, kaynak yoğun PostgreSQL dağıtımları için en iyi seçimdir.
  • VPS with cPanel — VPS’in gücünü, veritabanlarını, kullanıcıları ve sunucu ayarlarını grafiksel arayüz üzerinden yönetmek için kullanımı kolay bir kontrol paneliyle birleştirmek isteyenler için harika bir seçenektir.

Sonuç

Bir PostgreSQL veritabanına bağlanmak, her geliştiricinin, veri mühendisinin ve sistem yöneticisinin ustalaşması gereken temel bir beceridir. Bu kılavuz tüm birincil bağlantı yöntemlerini ayrıntılı olarak ele almıştır:

  • psql ile CLI — Hızlı, güçlü ve PostgreSQL’in kurulu olduğu her yerde kullanılabilir.
  • pgAdmin — Görsel veritabanı yönetimi ve yönetimi için resmi GUI.
  • DBeaver — Birden fazla veritabanı sistemini destekleyen çok yönlü, çapraz platform GUI istemcisi.
  • Python (psycopg2) — Python uygulamaları için standart PostgreSQL adaptörü.
  • Node.js (pg) — JavaScript/Node.js ortamlarında PostgreSQL bağlantısı için tercih edilen paket.

Doğru bağlantı yöntemini güçlü güvenlik uygulamaları ve güvenilir bir hosting altyapısıyla birleştirerek, kişisel projelerden kurumsal ölçekli uygulamalara kadar her iş yüküne hazır, sağlam, güvenli ve yüksek performanslı bir PostgreSQL kurulumuna sahip olacaksınız.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın