Sitenizin veritabanı yalnızca sunucunun kendi loopback adresinden gelen bağlantıları dinler, bu yüzden TablePlus, Sequel Ace, DBeaver veya MySQL Workbench gibi bir masaüstü aracı ona doğrudan ulaşamaz. Bir SSH tüneli, bu araçlara veritabanına yönlendirilmiş yerel bir port sağlar; verilerinize MySQL'i internete açmadan düzgün bir GUI ile erişmenizin yolu budur.
Tünele Neden İhtiyaç Duyulur
Web Siteleri (Siteler) bölümünü açın, siteye tıklayın, ardından Veritabanı seçeneğine tıklayın. Bağlantı bilgileri kartı, ana makineyi 127.0.0.1 ve portu 3306 olarak gösterir. Bu bir yer tutucu değildir: veritabanı gerçekten de yalnızca üzerinde çalıştığı makineden gelen bağlantıları kabul eder. Genel internet üzerinden hiçbir şey 3306 portuna ulaşamaz, bu da tüm bir saldırı sınıfını ortadan kaldırır.
Bir SSH tüneli bu açığı güvenli bir şekilde kapatır. SSH istemciniz dizüstü bilgisayarınızda bir port açar, ona gönderdiğiniz her şeyi şifreler ve sanki yerel bir süreç bağlanmış gibi bunu sunucunun içinden veritabanına iletir.

Önce İhtiyacınız Olanlar
Bir tünel bir SSH bağlantısıdır, bu yüzden bunların hiçbirinin çalışması için siteye kayıtlı bir SSH anahtarına ihtiyacınız vardır. Önce Bir Siteye SSH Anahtarı Ekleme makalesini takip edin, ardından buraya geri dönün.
Dört şeyi toplayın:
- SSH ana makinesi, portu ve kullanıcı adı, Ayarlar, ardından SSH Anahtarları bölümünden, Bağlantı bilgileri kartında.
- Veritabanı adı, kullanıcı adı ve parola, Veritabanı sekmesinden. Parolayı görmek için göz simgesine, panonuza kopyalamak için kopyala simgesine tıklayın.
Veritabanı sekmesi No database provisioned for this site type (Bu site türü için veritabanı sağlanmamış) diyorsa, bu sitenin bir veritabanı yoktur. Statik siteler ve bazı Node.js siteleri veritabanı olmadan oluşturulur.
Bir Terminalden Tüneli Açma
Genel yapı şöyledir: SSH bağlantısının karşı tarafındaki 127.0.0.1:3306 portuna yerel bir portu yönlendirin.
ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
-L 3307:127.0.0.1:3306makinenizde 3307 portunu açar ve bunu sunucunun loopback arayüzündeki 3306 portuna yönlendirir.-Nbir kabuk çalıştırmayın, sadece tüneli açık tutun demektir.- Bu site için kullanılan anahtar varsayılan anahtarınız değilse
-i /path/to/keyekleyin.
Bu terminal penceresini çalışır halde bırakın. O açıkken, dizüstü bilgisayarınızdaki 127.0.0.1:3307 sitenin veritabanıdır.
Yerelde 3306 yerine 3307 kullanın. Kendi makinenizde MySQL veya MariaDB kuruluysa, bu zaten 3306'yı kullanıyordur ve tünel "address already in use" (adres zaten kullanımda) hatasıyla bağlanamaz. Boşta olan herhangi bir yerel port işe yarar.
Veritabanı İstemcinizi Tünele Yönlendirme
GUI istemcinizde, şu değerlerle sade bir MySQL bağlantısı oluşturun:
| Alan | Değer |
|---|---|
| Host (Ana Makine) | 127.0.0.1 |
| Port | 3307 (yönlendirdiğiniz yerel port) |
| User (Kullanıcı) | Veritabanı sekmesindeki Username (Kullanıcı Adı) |
| Password (Parola) | Veritabanı sekmesindeki Password (Parola) |
| Database (Veritabanı) | Veritabanı sekmesindeki Veritabanı adı |
Host alanına SSH ana makinesini yazmayın. İstemci açısından, kendi makinenizdeki bir veritabanıyla konuşuyormuş gibi görünür.
Yerleşik SSH Sekmesine Sahip İstemciler
TablePlus, Sequel Ace, DBeaver ve MySQL Workbench, tüneli kendileri yönetebilir; bu da bir terminali açık tutma zorunluluğunu ortadan kaldırır. İki alan grubunu doldurun:
- SSH bölümü: SSH Anahtarları sayfasından ana makine, port, kullanıcı adı ve özel anahtar dosyası.
- Veritabanı bölümü: ana makine
127.0.0.1, port3306, artı Veritabanı sekmesindeki veritabanı adı, kullanıcı ve parola.
İstemci tüneli oluştururken, veritabanı bölümünde yerel yönlendirilen portunuz yerine 3306 kullanın. İstemci, sunucunun bakış açısından bağlanır, bu yüzden gerçek portu görür.
Bunun Yerine phpMyAdmin Kullanma
Yalnızca bir tabloya hızlıca göz atmanız gerekiyorsa, hiç tünele ihtiyacınız yoktur. Veritabanı sekmesinde, phpMyAdmin'i Aç düğmesine sahip bir phpMyAdmin kartı bulunur. Sizi KPanel üzerinden oturum açtırır, bu yüzden hatırlanması gereken ayrı bir parola yoktur ve zaten bu sitenin veritabanına yönlendirilmiş olarak yeni bir sekmede açılır.
phpMyAdmin, göz atma, tek seferlik bir sorgu çalıştırma veya bir değeri kontrol etme için daha hızlı seçenektir. Tünel üzerinden masaüstü istemcisi ise büyük dışa aktarmalar, şema çalışmaları ve betikleştirmek istediğiniz her şey için daha iyidir. Tarayıcı yolu için phpMyAdmin Kullanımı makalesine bakın.
Tünel Üzerinden Sorgu Çalıştırma ve Dökümler Alma
Tünel açıkken, standart komut satırı araçları normal şekilde çalışır, yerel yönlendirilmiş portunuza yönlendirilmiş olarak:
mysql -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name>
mysqldump -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name> > backup.sql
Elle alınan bir döküm, bir yedekleme stratejisi değil, pratik bir kopyadır. Yalnızca onu çalıştırdığınız andaki kadar güncel kalır ve onu çalıştırdığınız dizüstü bilgisayarda yaşar. KapsuleHost zaten sitenin otomatik günlük yedeklerini alır ve bunları 30 gün boyunca saklar. Yerel bir .sql dosyasına güvenmeden önce Yedek Alma makalesine bakın.
Sorun Giderme
Tüneli açarken "Address already in use" hatası. Makinenizde o yerel portu zaten kullanan bir şey var. Başka bir port seçin, örneğin -L 3399:127.0.0.1:3306, ve istemcinizdeki portu buna uyacak şekilde değiştirin.
Veritabanı istemcisinden "Connection refused" hatası. Tünel ayakta değil. SSH terminalinin hâlâ çalıştığını ve bir hata yazdırmadığını, istemcinizdeki portun -L argümanındaki yerel portla eşleştiğini kontrol edin.
SSH bağlanıyor ama istemci yine de zaman aşımına uğruyor. 127.0.0.1:3306 adresine yönlendirdiğinizi, genel ana makine adına değil, doğrulayın. Genel ada yönlendirmek, sunucudan veritabanına internet üzerinden ulaşmasını istemek anlamına gelir ki tam olarak engellenen şey budur.
"Access denied for user" hatası. SSH girişi başarılı oldu ama MySQL kimlik bilgileri yanlış. Kullanıcı adını ve parolayı yeniden yazmak yerine Veritabanı sekmesindeki kopyala simgelerini kullanarak tekrar kopyalayın ve doğru veritabanı adına bağlandığınızı kontrol edin.
MySQL'e ulaşmadan önce "Permission denied (publickey)" hatası. Bu, veritabanı katmanı değil, SSH katmanıdır. Bir Siteye SSH Anahtarı Ekleme makalesindeki sorun giderme bölümünü inceleyin.
Sırada Ne Var
- SFTP ile Dosya Yükleme dosya aktarımı için aynı SSH kimlik bilgilerini kullanır.
- Tarayıcı tabanlı veritabanı çalışmaları için phpMyAdmin Kullanımı.
- Bir sorgu amaçladığınızdan daha fazlasına gitmişse Yedekten Geri Yükleme.