# Veritabanınıza SSH Tüneli Üzerinden Bağlanma

Source: https://support.kapsulehost.com/tr-tr/database-ssh-tunnel

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.

![KPanel'de bağlantı bilgilerini gösteren Veritabanı sekmesi](https://support.kapsulehost.com/help/screenshots/database-ssh-tunnel.84df4ba6.webp)

## Önce İhtiyacınız Olanlar

> **Note:** 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](https://support.kapsulehost.com/tr-tr/adding-ssh-keys) 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.

```sh
ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
```

- `-L 3307:127.0.0.1:3306` makinenizde 3307 portunu açar ve bunu sunucunun loopback arayüzündeki 3306 portuna yönlendirir.
- `-N` bir 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/key` ekleyin.

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.

> **Tip:** 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`, port `3306`, 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ı](https://support.kapsulehost.com/tr-tr/sites-phpmyadmin) 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:

```sh
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
```

> **Warning:** 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](https://support.kapsulehost.com/tr-tr/taking-a-backup) 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](https://support.kapsulehost.com/tr-tr/adding-ssh-keys) makalesindeki sorun giderme bölümünü inceleyin.

## Sırada Ne Var

- [SFTP ile Dosya Yükleme](https://support.kapsulehost.com/tr-tr/sftp-access) dosya aktarımı için aynı SSH kimlik bilgilerini kullanır.
- Tarayıcı tabanlı veritabanı çalışmaları için [phpMyAdmin Kullanımı](https://support.kapsulehost.com/tr-tr/sites-phpmyadmin).
- Bir sorgu amaçladığınızdan daha fazlasına gitmişse [Yedekten Geri Yükleme](https://support.kapsulehost.com/tr-tr/restoring-from-backup).
