MySQL Uzaktan Erişimi Güvenli Şekilde Açma (2025)
Bu rehberde ne öğreneceksiniz?
Bu rehberde MySQL veritabanına uzaktan erişimi güvenli şekilde nasıl açacağınızı öğreneceksiniz.
IP kısıtlaması, firewall, SSL/TLS ve Zero Trust yaklaşımı birlikte uygulanacaktır.
Teknik Özet
Ana konu: MySQL remote access güvenliği
Amaç: Ayrı sunuculardan güvenli veritabanı bağlantısı
Yaklaşım: Zero Trust + en az yetki
Adımlar: Bind-address → Kullanıcı → Firewall → SSL → Denetim
Ön Gereksinimler
- Ubuntu 22.04 veya üzeri
- MySQL 8.x kurulu
- Sudo yetkili kullanıcı
- UFW aktif
- Güncel veritabanı yedeği
1️⃣ MySQL Dinleme Adresini Düzenleme
MySQL varsayılan olarak sadece localhost dinler.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
- Bu dosya MySQL ağ yapılandırmasını içerir.
Önerilen (Özel Ağ)
bind-address = 10.0.0.5
- Bu ayar MySQL’i sadece özel ağdan erişilebilir yapar.
Zorunlu Durum (Tüm Arayüzler)
bind-address = 0.0.0.0
⚠️ Bu seçenek yalnızca sıkı firewall ile kullanılmalıdır.
- MySQL servisini yeniden başlatın.
sudo systemctl restart mysql
- Bu komut ayarları aktif eder.
2️⃣ IP Kısıtlı MySQL Kullanıcısı Oluşturma
- Root hesabını asla uzaktan açmayın.
sudo mysql -u root
- Bu komut MySQL kabuğunu açar.
CREATE USER 'rabisu_user'@'203.0.113.10' IDENTIFIED BY 'GucluSifre123!';
GRANT SELECT, INSERT, UPDATE ON veritabanim.* TO 'rabisu_user'@'203.0.113.10';
FLUSH PRIVILEGES;
- Bu kullanıcı yalnızca belirtilen IP’den bağlanabilir.
🔐 En az yetki prensibi uygulanır.
3️⃣ Firewall (UFW) Kuralları
- MySQL portunu herkese açmayın.
sudo ufw allow from 203.0.113.10 to any port 3306
- Bu kural yalnızca güvenilir sunucuya izin verir.
- Firewall durumunu kontrol edin.
sudo ufw status
- Bu komut aktif kuralları listeler.
4️⃣ SSL/TLS ile Veri Şifreleme
Uzak bağlantılarda şifreleme zorunludur.
require_secure_transport = ON
- Bu ayar SSL olmadan bağlantıyı engeller.
MySQL’i yeniden başlatın.
sudo systemctl restart mysql
- Kullanıcıyı SSL’e zorlayın.
ALTER USER 'rabisu_user'@'203.0.113.10' REQUIRE SSL;
- İstemciden güvenli bağlantı kurun.
mysql --ssl-mode=REQUIRED -u rabisu_user -h sunucu_ip -p
- Bu bağlantı trafiği şifreler.
5️⃣ Zero Trust ve AI Destekli Denetim
Zero Trust yaklaşımı gereği hiçbir bağlantı varsayılan olarak güvenli değildir.
Önerilen kontroller:
-
% host tanımı tespiti
-
Açık 3306 portu denetimi
-
Anormal giriş denemeleri
-
Yetki fazlalığı kontrolü
Örnek uyarı:
[ALERT] MySQL riskli yapılandırma tespit edildi
Kullanıcı: rabisu_user@'%'
Risk: Global erişim açık
Öneri: IP bazlı kısıtlama uygulayın
- Bu denetimler log analiz araçlarıyla otomatik yapılabilir.
Yaygın Hatalar ve Çözümler
- Access denied hatası → Kullanıcı IP’si birebir eşleşmeli.
- Bağlantı yok → Firewall ve bind-address kontrol edin.
Eski istemci sorunu → Gerekirse kullanıcıyı uyumlu yapın.
ALTER USER 'rabisu_user'@'203.0.113.10'
IDENTIFIED WITH mysql_native_password BY 'GucluSifre123!';
Sıkça Sorulan Sorular (SSS)
1. bind-address = 0.0.0.0 güvenli mi? Firewall varsa kabul edilebilir.
2. Root uzaktan açılır mı? Hayır, ciddi güvenlik riskidir.
3. VPN mi önerilir? Üretimde evet.
4. SSL şart mı? 2025 standartlarında evet.
5. Güvenli MySQL Denetim Listesi
- bind-address özel IP’ye ayarlandı
-
IP kısıtlı kullanıcı oluşturuldu
-
Firewall sadece izinli IP’lere açık
-
Root uzaktan kilitlendi
-
SSL/TLS aktif
-
Yetkiler periyodik denetleniyor
Sonuç
MySQL uzaktan erişimi doğru yapılandırıldığında güvenlidir. IP kısıtlaması, firewall, SSL ve Zero Trust birlikte uygulanmalıdır.
🚀 Rabisu Bulut altyapısında izole ağlar ve güvenli veritabanlarıyla bu mimariyi dakikalar içinde kurabilirsiniz.