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
- Önerilen (özel ağ kullanıyorsanız):
bind-address = 10.0.0.5
- Zorunluysa (tüm arayüzler):
bind-address = 0.0.0.0
- 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
- Root ile MySQL’e bağlanın:
sudo mysql
- IP’ye özel kullanıcı oluşturun:
CREATE USER 'rabisu_app'@'203.0.113.10' IDENTIFIED BY 'GucluBirSifre123!';
- 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
- 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
- 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)
- Kullanıcıyı TLS’e zorlayın:
ALTER USER 'rabisu_app'@'203.0.113.10' REQUIRE SSL;
- İ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
-
Root uzaktan erişimi kapalı tutun
-
user@'%' tanımlarından kaçının
-
Logları izleyin: /var/log/mysql/error.log
-
Şifreleri periyodik değiştirin
-
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.