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
- 2.2 Bağlantı profilleri ve güvenli ortamlar
- 2.3 SSH Jump Host Tüneli
- 2.4 HTTP PHP Tüneli (sqloz-tunnel.php)
- 2.5 Ortam Renk Etiketleri
- 2.6 Güvenli Kimlik Bilgisi Saklama
- İlgili Konular
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.
Cmd + Ntuşlarına basın veya Dosya → Yeni Bağlantı… menüsünü kullanın.- 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, PostgreSQL5432). - Kullanıcı ve Parola: Kullanıcı adı ve parola.
- Bağlantı Adı: Açıklayıcı bir isim (örn.
- 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ı:
- Bağlantı iletişim kutusunda SSH Tüneli sekmesine geçin.
- SSH Tüneli Etkinleştir’i işaretleyin.
- SSH sunucu adresini (SSH Host), portu (varsayılan
22) ve kullanıcı adını girin. - Aşağıdaki Kimlik Doğrulama Yöntemi seçeneklerinden birini belirleyin:
- Private Key (önerilir):
~/.ssh/id_ed25519veyaid_rsadosyasını seçin; parolası varsa girin. - Parola: SSH parolası.
- Private Key (önerilir):
- 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ı:
- SQLOZ kurulum paketindeki
sqloz-tunnel.phpdosyasını hosting hesabının web klasörüne yükleyin (örn.public_html/). - 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. - 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.
- Tünel URL’si:
- 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.phpdosyasına yazılmaz. Yalnızca tek kullanımlıkSQTUNNEL_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):
- SQLOZ’daki yerel sürücü, tünel üzerinden sunucudan gelen greeting paketini (Server Greeting) okur.
- 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.
- Hazırlanan binary paket
base64olarak kodlanır ve şifreli HTTPS bağlantısı üzerinden betiğe gönderilir. - 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şkeni | Açıklama | Varsayılan |
|---|---|---|
SQTUNNEL_HOST | Hedef MySQL sunucu adresi | 127.0.0.1 |
SQTUNNEL_PORT | Hedef MySQL sunucu portu | 3306 |
SQTUNNEL_TOKEN | İstemcinin göndermesi gereken gizli erişim anahtarı | Değiştirilmeli |
SQTUNNEL_MAX_SESSIONS | Maksimum eş zamanlı canlı oturum sayısı | 16 |
SQTUNNEL_IDLE_TIMEOUT | Boşta kalan worker process’lerin otomatik sonlandırma süresi (sn) | 3600 |
SQTUNNEL_LOCKOUT_THRESHOLD | Başarısız token denemelerinde IP engelleme eşiği (brute-force koruması) | 5 |
SQTUNNEL_LOCKOUT_WINDOW | Brute-force engelleme penceresi süresi (sn) | 60 |
Yapılandırma yöntemleri:
- Doğrudan PHP dosyasında: Betiğin başındaki
$SQTUNNEL_CFGdizisini düzenleyin.$SQTUNNEL_CFG = [ 'host' => '127.0.0.1', 'port' => 3306, 'token' => 'uzun_ve_gizli_parola_123', ]; - Nginx (FastCGI):
/etc/nginx/sites-available/defaultiçindeki ilgililocation ~ \.php$bloğunafastcgi_paramsatı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"; } - Apache (
.htaccess):SetEnv SQTUNNEL_HOST "127.0.0.1" SetEnv SQTUNNEL_TOKEN "uzun_ve_gizli_parola_123" - 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.



