Ana içeriğe atla
SQLOZ
Bölüm 2 Temel Bilgiler ve Başlangıç

Bölüm 2: Bağlantılar ve Tüneller

Bilgi: Bu bölüm; doğrudan veritabanı bağlantılarının kurulmasını, SSH Jump Host ve HTTP PHP tünellerinin yapılandırılmasını, ortam renk etiketlerini ve kimlik bilgilerinin güvenli saklanmasını kapsar.

Bu bölümde:

2.1 Doğrudan Bağlantı Kurma

Yerel bir makinede veya internete açık bir sunucuda barındırılan bir veritabanına bağlanmak için şu adımları izleyin.

  1. Cmd + N tuşlarına basın veya Dosya → Yeni Bağlantı… menüsünü kullanın.
  2. Genel sekmesinde aşağıdaki alanları doldurun:
    • Bağlantı Adı: Açıklayıcı bir isim (örn. Ana E-Ticaret Prod).
    • Motor: MySQL, PostgreSQL veya yerel SQLite seçin. MariaDB, MySQL profil ailesini kullanır ve bağlantı kurulduktan sonra tanımlanır; ayrı bir seçenek olarak listelenmez. MySQL 8.0/8.4, MariaDB 10.6/11.4 ve PostgreSQL 16 mevcut test matrisidir, bağlantı minimumlari değildir. Bkz. Bölüm 22.
    • Host ve Port: Sunucu adresi ve port (MySQL varsayılanı 3306, PostgreSQL 5432).
    • Kullanıcı ve Parola: Kullanıcı adı ve parola.
  3. Test Bağlantısı ile bağlantıyı doğrulayın. Başarı onayını gördükten sonra Kaydet ve Bağlan ile bağlantı kurun.

2.2 Bağlantı profilleri ve güvenli ortamlar

Kaydedilen bağlantı profilleri; isim, motor, host, port, veritabanı, ortam rengi ve salt okunur tercihi gibi gizli olmayan ayarları saklar. Parolalar ve tünel gizli anahtarları macOS Keychain’de saklanır.

  • Yeniden kullanılabilir bir profil için Kaydet ve Bağlan’ı kullanın.
  • Kaydedilen profil listesine eklenmemesi gereken geçici bir bağlantı için yalnızca oturum seçeneğini kullanın.
  • Aktif çalışma alanının ve object browser’ın ortamı net biçimde göstermesi için Prod, Staging, Dev, Test veya Sandbox renkleri atayın.
  • Bir production veritabanını incelemeden önce profilin Salt Okunur ayarını etkinleştirin. Editör ve ızgara, veri değiştiren işlemleri reddeder.

2.3 SSH Jump Host Tüneli

Birçok kurumsal ortamda veritabanı sunucusu doğrudan dış ağa açık değildir; yalnızca bir Jump Host (Bastion) üzerinden erişilir. SQLOZ bu kurulum için yerleşik bir SSH tüneli sağlar.

[SQLOZ] --(SSH Tüneli / Port 22)--> [SSH Jump Host] --(Yerel Ağ)--> [Veritabanı Sunucusu]

Yapılandırma adımları:

  1. Bağlantı iletişim kutusunda SSH Tüneli sekmesine geçin.
  2. SSH Tüneli Etkinleştir’i işaretleyin.
  3. SSH sunucu adresini (SSH Host), portu (varsayılan 22) ve kullanıcı adını girin.
  4. Aşağıdaki Kimlik Doğrulama Yöntemi seçeneklerinden birini belirleyin:
    • Private Key (önerilir): ~/.ssh/id_ed25519 veya id_rsa dosyasını seçin; parolası varsa girin.
    • Parola: SSH parolası.
  5. Test Bağlantısı ile tüneli doğrulayın. SQLOZ tüneli arka planda açar ve veritabanı oturumunu başlatır.

İpucu: Private key kimlik doğrulaması, parola doğrulamaya göre daha güvenli ve otomatize edilmesi daha kolay olduğu için tercih edilir.

2.4 HTTP PHP Tüneli (sqloz-tunnel.php)

Paylaşımlı hosting sağlayıcılarında (cPanel/DirectAdmin) port 3306 genellikle dışarıya kapalıdır ve SSH erişimi sağlanmaz. Bu durumda veritabanına yalnızca web sunucusundaki PHP üzerinden erişilebilir. SQLOZ, sqloz-tunnel.php betiğini kullanan bir HTTP tüneli sağlar.

[SQLOZ] --(HTTPS POST / Token Şifreli)--> [sqloz-tunnel.php] --(localhost:3306)--> [MySQL Sunucusu]

Kurulum adımları:

  1. SQLOZ kurulum paketindeki sqloz-tunnel.php dosyasını hosting hesabının web klasörüne yükleyin (örn. public_html/).
  2. Betikteki $TOKEN = "gizli_sifreniz"; satırını güçlü bir gizli anahtarla değiştirin. Betik, varsayılan token değiştirilene kadar HTTP 500 hatası döndürerek çalışmayı reddeder.
  3. SQLOZ bağlantı ayarlarında HTTP Tüneli sekmesini işaretleyin:
    • Tünel URL’si: https://example.com/sqloz-tunnel.php
    • Paylaşılan Gizli Anahtar: Betiğe yazdığınız gizli token.
  4. Test Bağlantısı ile tüneli doğrulayın.

Veritabanı Kimlik Bilgilerinin İletilmesi

Önemli: Veritabanı kullanıcı adı ve parolası hiçbir zaman sqloz-tunnel.php dosyasına yazılmaz. Yalnızca tek kullanımlık SQTUNNEL_TOKEN (Paylaşılan Gizli Anahtar) betik içinde tanımlanır.

Tünel betiği bir veritabanı sürücüsü çalıştırmaz ve veritabanı parolasını düz metin olarak görmez. Görevi yalnızca ham baytları taşımaktır (raw TCP bayt proxy’si):

  1. SQLOZ’daki yerel sürücü, tünel üzerinden sunucudan gelen greeting paketini (Server Greeting) okur.
  2. Sürücü, bağlantı penceresine girilen veritabanı kullanıcı adı ve parolasını standart veritabanı binary protokolüne (Client Authentication Packet) göre şifreler.
  3. Hazırlanan binary paket base64 olarak kodlanır ve şifreli HTTPS bağlantısı üzerinden betiğe gönderilir.
  4. Betik paketi çözer ve ham baytları doğrudan veritabanı TCP soketine yazar. Sunucu kimliği doğrular ve oturum kurulur.

Yapılandırma Ortam Değişkenleri

sqloz-tunnel.php betiği PHP dosyasından veya sunucu düzeyindeki ortam değişkenleri aracılığıyla yapılandırılabilir. Aşağıdaki değişkenler desteklenmektedir.

Ortam DeğişkeniAçıklamaVarsayılan
SQTUNNEL_HOSTHedef MySQL sunucu adresi127.0.0.1
SQTUNNEL_PORTHedef MySQL sunucu portu3306
SQTUNNEL_TOKENİstemcinin göndermesi gereken gizli erişim anahtarıDeğiştirilmeli
SQTUNNEL_MAX_SESSIONSMaksimum eş zamanlı canlı oturum sayısı16
SQTUNNEL_IDLE_TIMEOUTBoşta kalan worker process’lerin otomatik sonlandırma süresi (sn)3600
SQTUNNEL_LOCKOUT_THRESHOLDBaşarısız token denemelerinde IP engelleme eşiği (brute-force koruması)5
SQTUNNEL_LOCKOUT_WINDOWBrute-force engelleme penceresi süresi (sn)60

Yapılandırma yöntemleri:

  1. Doğrudan PHP dosyasında: Betiğin başındaki $SQTUNNEL_CFG dizisini düzenleyin.
    $SQTUNNEL_CFG = [
        'host'  => '127.0.0.1',
        'port'  => 3306,
        'token' => 'uzun_ve_gizli_parola_123',
    ];
  2. Nginx (FastCGI): /etc/nginx/sites-available/default içindeki ilgili location ~ \.php$ bloğuna fastcgi_param satırları ekleyin.
    location ~ \.php$ {
        fastcgi_param SQTUNNEL_HOST "127.0.0.1";
        fastcgi_param SQTUNNEL_TOKEN "uzun_ve_gizli_parola_123";
        fastcgi_param SQTUNNEL_MAX_SESSIONS "32";
    }
  3. Apache (.htaccess):
    SetEnv SQTUNNEL_HOST "127.0.0.1"
    SetEnv SQTUNNEL_TOKEN "uzun_ve_gizli_parola_123"
  4. Docker Compose:
    services:
      web:
        image: php:8.2-apache
        environment:
          - SQTUNNEL_HOST=mysql-db
          - SQTUNNEL_PORT=3306
          - SQTUNNEL_TOKEN=uzun_ve_gizli_parola_123

Uyarı: Varsayılan 'CHANGE_ME_to_a_long_random_string' token değiştirilene kadar betik, güvenlik nedeniyle çalışmayı reddeder ve HTTP 500 döndürür.

2.5 Ortam Renk Etiketleri

Aynı anda birçok bağlantı sekmesi açıkken yanlış ortamda (örn. production) sorgu çalıştırma riski yüksektir. SQLOZ bu riski ortam renk etiketleriyle azaltır.

Genel sekmesindeki Ortam Rengi rozetlerinden her ortama bir renk atayın. Seçilen renk sol Object Browser’a ve bağlantı sekmesine uygulanır (tintColor).

  • Prod (Kırmızı - #E8334A): Canlı production sunucuları.
  • Staging (Turuncu - #FF9500): Test ve pre-production ortamları.
  • Dev (Yeşil - #34C759): Yerel geliştirme ortamı.
  • Test (Mavi - #007AFF) ve Sandbox (Mor - #AF52DE): İzole test ortamları.
  • Özel renk: Apple renk seçici veya hex alanıyla özel bir ton tanımlanabilir.

2.6 Güvenli Kimlik Bilgisi Saklama

SQLOZ, veritabanı ve SSH parolalarını metin dosyalarında, yapılandırma dosyalarında veya log kayıtlarında saklamaz. Tüm hassas parolalar, donanım şifreli macOS Keychain kasasına gönderilir.

İpucu: Parolaların yalnızca macOS Keychain’de saklanması, kimlik bilgilerinin başka cihazlar ve yazılımlar tarafından okunmasını engeller.

Doğrudan bağlantı yapılandırması - Genel sekmesi

SSH tünel yapılandırması

SSL / TLS şifreleme ayarları

HTTP PHP tünel yapılandırması

İlgili Konular