Kısaca: Uzak MySQL bağlantısı, hosting veya sunucudaki MySQL/MariaDB veritabanına aynı sunucuda çalışmayan bir uygulamadan, örneğin ofisteki raporlama aracından ya da masaüstü veritabanı istemcisinden bağlanmaktır. Güvenli kurmanın özü şudur: veritabanı portunu tüm internete açmamak, bağlantıyı tek bir IP adresine ve yalnızca gereken yetkiye sınırlamak, trafiği TLS veya SSH tüneliyle şifrelemek.
Power BI, Excel, bir muhasebe entegrasyonu ya da başka bir sunucudaki uygulama, web sitenizin veritabanındaki verilere ihtiyaç duyabilir. Bu yazıda uzak erişimin nasıl çalıştığını, hangi yöntemin hangi durumda daha uygun olduğunu ve bağlantıyı açarken atlanmaması gereken güvenlik adımlarını sırasıyla anlatıyoruz.

Bir web sitesi veritabanına genellikle aynı sunucudan, yani localhost üzerinden bağlanır. Uzak bağlantıda ise istemci başka bir makinededir ve veritabanı sunucusuna ağ üzerinden, varsayılan olarak 3306 numaralı TCP portundan ulaşır. Tipik ihtiyaçlar şunlardır:
Kullandığınız motor MySQL ya da MariaDB olabilir. İkisinin bağlantı mantığı büyük ölçüde aynıdır; farkları merak ediyorsanız MySQL ve MariaDB farkı yazımıza bakabilirsiniz.
MariaDB'nin uzak istemci erişimi rehberine göre birçok kurulumda sunucu yalnızca yerel bağlantıları dinler: yapılandırmada bind-address = 127.0.0.1 ya da ağ dinlemeyi tamamen kapatan skip-networking bulunur. Bu bilinçli bir güvenlik tercihidir. İnternete açık bir veritabanı portu, parola deneme saldırılarına ve yazılım açıklarına doğrudan hedef olur.
Uzak erişim için üç katmanın birlikte ayarlanması gerekir: veritabanının ağ arayüzünü dinlemesi, bağlanacak kullanıcının o adresten girişine izin verilmesi ve sunucu ile ağdaki güvenlik duvarının bu trafiğe izin vermesi. Bunlardan biri eksikse bağlantı kurulmaz. Hepsi gereğinden geniş açılırsa bağlantı kurulur ama risk büyür.
İki yaygın yöntem vardır:
Paylaşımlı hosting paketlerinde uzak veritabanı erişiminin açık olup olmadığı ve nasıl izin verildiği hizmete göre değişir. Emin değilseniz değişiklik yapmadan önce destek talebi oluşturarak durumu sorun. VPS veya sunucuda ise aşağıdaki adımları kendiniz uygulayabilirsiniz.
Bu yöntem için sunucuya SSH erişiminiz olmalıdır. SSH'ye yeniyseniz SSH nedir, nasıl bağlanılır rehberimizle başlayın; parola yerine SSH anahtarı kullanmanız güvenliği artırır.
-L seçeneği, bilgisayarınızdaki 3307 portuna gelen bağlantıyı sunucunun kendi üzerindeki 3306 portuna iletir.ssh -L 3307:127.0.0.1:3306 kullanici@sunucu-adresi
127.0.0.1, port olarak 3307 yazın. Komut satırından şöyle bağlanabilirsiniz:mysql -h 127.0.0.1 -P 3307 -u rapor -p
Bu yöntemde veritabanı yine yalnızca yerel bağlantıları dinler. Dışarıdan görünen tek kapı SSH'dir ve onu da anahtar ile korursunuz.
Sürekli çalışan bir servis için doğrudan bağlantı gerekiyorsa şu sırayı izleyin:
bind-address değerini sunucunun erişilmesini istediğiniz ağ adresine göre değiştirin ve skip-networking varsa kaldırın. Ardından veritabanı servisini yeniden başlatın.'kullanici'@'adres' biçimindedir. Bağlantıya izin verilecek adresi açıkça yazın, '%' joker karakterini kullanmayın. Aşağıdaki örnekte 203.0.113.10 belgelerde kullanılan örnek bir adrestir:CREATE USER 'rapor'@'203.0.113.10' IDENTIFIED BY 'guclu-bir-parola';
GRANT SELECT ON satis.* TO 'rapor'@'203.0.113.10';
SELECT yeterlidir. Sitenin kendi yönetici hesabını uzak erişim için kullanmayın.ALTER USER 'rapor'@'203.0.113.10' REQUIRE SSL;
bind-address ayarı trafiği durduruyordur.Kullanılmayan uzak hesapları silin, parolaları düzenli aralıklarla değiştirin ve veritabanı günlüklerinde beklenmeyen giriş denemelerini izleyin. Raporlama için ayrı bir kullanıcı açmak, bir sorun olduğunda yalnızca o hesabı kapatmanıza da olanak tanır. Uzak erişim veriyi kullanılabilir kılar ama yedeklemenin yerini tutmaz; düzenli yedek planı için yedekleme stratejisi yazımıza göz atın.
Özetle: mümkünse SSH tüneli kullanın, doğrudan bağlantı şartsa hesabı tek bir IP adresine ve yalnızca gereken yetkiye bağlayın, TLS'i zorunlu kılın ve güvenlik duvarında yalnızca o adrese izin verin.
MySQL ve MariaDB varsayılan olarak 3306 numaralı TCP portunu kullanır. Bu port değiştirilebilir; sunucunuzun yapılandırmasında farklı bir port yazıyorsa istemcide de onu kullanın.
Evet. '%' hesabın her IP adresinden giriş yapabileceği anlamına gelir ve parola deneme saldırılarına kapı açar. Mümkünse tek bir IP adresi yazın ya da SSH tüneli kullanın.
Hayır. Tünelde veritabanı yalnızca sunucunun içinden erişilir; dışarıya açık olan tek port SSH portudur.
Araç MySQL bağlayıcısını destekliyorsa çalışır. Raporlama için yalnızca SELECT yetkisi olan ayrı bir kullanıcı açmanız ve bağlantıyı şifrelemeniz önerilir.