Ana içeriğe geç

MySQL Uzaktan Erişim Açma (2025) – Güvenli Rehber

Bu rehberde ne öğreneceksiniz?

Bu rehberde MySQL veritabanınızı uzaktan erişime güvenli biçimde açmayı öğreneceksiniz.
Yetkilendirme, firewall ve TLS ile production uyumlu yapı kuracağız.


🧠 Teknik Özet

Bu rehber, MySQL’in varsayılan localhost kısıtını kaldırırken güvenliği korumayı hedefler.
Adımlar: bind-address → kullanıcı → UFW → test → SSL/TLS.


Ön Koşullar

  • Ubuntu 20.04 / 22.04 / 24.04
  • MySQL 8.0 veya üzeri
  • sudo yetkisi
  • UFW aktif
  • Güncel veritabanı yedeği

1️⃣ MySQL’i Uzaktan Bağlantılara Açma

MySQL varsayılan olarak sadece 127.0.0.1 üzerinden dinler.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  • Bu dosya MySQL ağ ayarlarını içerir.

Varsayılan satırı bulun:


bind-address = 127.0.0.1

  1. Önerilen (özel ağ kullanıyorsanız):

bind-address = 10.0.0.5

  1. Zorunluysa (tüm arayüzler):

bind-address = 0.0.0.0
  1. Değişiklikleri uygulayın:

sudo systemctl restart mysql

⚠️ Not: 0.0.0.0 yalnızca sıkı firewall ve IP kısıtı ile kullanılmalıdır.


2️⃣ Uzak MySQL Kullanıcısı Oluşturma

  1. Root ile MySQL’e bağlanın:

sudo mysql

  1. IP’ye özel kullanıcı oluşturun:

CREATE USER 'rabisu_app'@'203.0.113.10' IDENTIFIED BY 'GucluBirSifre123!';

  1. Sadece gerekli yetkileri tanımlayın:

GRANT SELECT, INSERT, UPDATE, DELETE ON uygulama_db.* TO 'rabisu_app'@'203.0.113.10';
FLUSH PRIVILEGES;
EXIT;
  • Bu yapı least privilege prensibini uygular.

3️⃣ Firewall (UFW) ile Erişimi Kısıtlama

  1. 3306 portunu sadece güvenilir IP’ye açın:

sudo ufw allow from 203.0.113.10 to any port 3306

Kuralları kontrol edin:


sudo ufw status
  • ❌ sudo ufw allow 3306 kesinlikle kullanmayın.

4️⃣ Uzak Bağlantıyı Test Etme

  1. Uygulama sunucusundan bağlanın:

mysql -u rabisu_app -h VERITABANI_IP -p
  • Bağlantı açılıyorsa yapılandırma doğrudur.

5️⃣ SSL/TLS ile Trafiği Şifreleme (Önerilir)

  1. Kullanıcıyı TLS’e zorlayın:

ALTER USER 'rabisu_app'@'203.0.113.10' REQUIRE SSL;

  1. İstemciden TLS ile bağlanın:

mysql --ssl-mode=REQUIRED -u rabisu_app -h VERITABANI_IP -p
  • Bu ayar, ağ üzerindeki veri sızıntılarını önler.

🔐 Güvenlik Sertleştirme Önerileri

  1. Root uzaktan erişimi kapalı tutun

  2. user@'%' tanımlarından kaçının

  3. Logları izleyin: /var/log/mysql/error.log

  4. Şifreleri periyodik değiştirin

  5. Dinamik IP varsa WireGuard VPN tercih edin


❓ Sıkça Sorulan Sorular (SSS)

1. bind-address = 0.0.0.0 güvenli mi? Tek başına hayır. Firewall ile IP kısıtı şarttır.

2. Connection refused hatası alıyorum. Genelde UFW veya bind-address kaynaklıdır.

3. Root ile uzaktan bağlanabilir miyim? Önerilmez. Güvenlik riski çok yüksektir.

4. IP adresim sürekli değişiyor. VPN kullanın. % tanımı büyük güvenlik açığıdır.


✅ Sonuç

MySQL uzaktan erişim, doğru yapılandırıldığında güvenli ve ölçeklenebilir olur. Bind-address, kullanıcı yetkileri ve firewall birlikte kullanılmalıdır.

Yüksek performanslı ve güvenli veritabanı altyapısı için Rabisu Bulut VDS üzerinde bu yapıyı kolayca kurabilirsiniz.