X
Lütfen Ülke (Bölge) Seçiniz
Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X
X
Lütfen Ülke (Bölge) Seçiniz
Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X

Uzak MySQL Bağlantısı: Hosting Veritabanına Dışarıdan Güvenli Erişim

AnasayfaYazılarVeri Yönetimi & İş ZekasıUzak MySQL Bağlantısı: Hosting Veri...

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.

Uzak MySQL bağlantısı güvenlik listesi: user@IP hesabı, yalnızca SELECT yetkisi, TLS şifreleme ve 3306 için güvenlik duvarı

Uzak MySQL bağlantısı nedir ve ne zaman gerekir?

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:

  • Raporlama ve iş zekası: Satış veya sipariş verilerini Power BI gibi bir araçla düzenli olarak okumak.
  • Yönetim araçları: Tabloları masaüstündeki bir veritabanı istemcisiyle incelemek.
  • Entegrasyon: Başka bir sunucudaki uygulamanın aynı veriyi okuması veya yazması.
  • Taşıma: Veriyi eski sunucudan yeni sunucuya aktarmak.

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.

Veritabanı neden varsayılan olarak dışarıya kapalıdır?

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.

Hangi yöntemi seçmelisiniz: doğrudan bağlantı mı, SSH tüneli mi?

İki yaygın yöntem vardır:

  • SSH tüneli: Veritabanı portu dışarıya kapalı kalır. İstemci önce sunucuya SSH ile bağlanır, veritabanı trafiği bu şifreli bağlantının içinden geçer. Masaüstü istemciler ve ara sıra yapılan işler için en güvenli ve en kolay seçenektir.
  • Doğrudan bağlantı (IP kısıtlı): 3306 portu yalnızca belirli bir sabit IP adresine açılır ve bağlantı TLS ile şifrelenir. SSH tüneli kuramayan, sürekli çalışan bir raporlama veya entegrasyon servisi için gerekebilir.

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.

SSH tüneliyle uzak MySQL bağlantısı nasıl kurulur?

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.

  1. Tüneli açın: Kendi bilgisayarınızda aşağıdaki komutu çalıştırın. ssh komutunun -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
  1. İstemciyi yerel porta bağlayın: Tünel açıkken veritabanı istemcinizde sunucu olarak 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
  1. Tüneli kapatın: İşiniz bittiğinde SSH oturumunu kapatın. Böylece erişim yalnızca ihtiyaç duyduğunuz süre boyunca açık kalır.

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.

Doğrudan bağlantı gerekiyorsa güvenli nasıl açılır?

Sürekli çalışan bir servis için doğrudan bağlantı gerekiyorsa şu sırayı izleyin:

  1. Dinleme adresini ayarlayın: Veritabanı yapılandırmasında 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.
  2. Kullanıcıyı tek bir IP adresine bağlayın: MySQL ve MariaDB'de hesaplar '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';
  1. Yalnızca gereken yetkiyi verin: GRANT komutuyla yetkiyi tek bir veritabanına ve işlem türüne sınırlayın. Raporlama aracı yalnızca okuyacaksa SELECT yeterlidir. Sitenin kendi yönetici hesabını uzak erişim için kullanmayın.
  2. Bağlantıyı şifreleyin: TLS ile güvenli bağlantı yapılandırın ve hesabı şifreli bağlantıya zorlayın:
ALTER USER 'rapor'@'203.0.113.10' REQUIRE SSL;
  1. Güvenlik duvarında yalnızca o adrese izin verin: 3306 portunu herkese değil, yalnızca istemcinin IP adresine açın. Kuralların mantığı için firewall nedir rehberimize bakabilirsiniz.

Uzak bağlantı çalışmıyorsa neyi kontrol etmelisiniz?

  • Bağlantı zaman aşımına uğruyor: Çoğunlukla güvenlik duvarı ya da bind-address ayarı trafiği durduruyordur.
  • Erişim reddedildi hatası: Sunucuya ulaşıyorsunuz ama kullanıcı ile adres eşleşmiyordur. İstemcinin internete çıktığı IP adresinin, hesapta yazan adresle aynı olduğundan emin olun.
  • Bir süre çalışıp sonra duruyor: İstemcinin IP adresi değişmiş olabilir. Ofis bağlantınızın sabit IP adresi yoksa SSH tüneli daha uygun bir çözümdür.

Uzak erişimi açtıktan sonra nelere dikkat etmelisiniz?

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.

Sık Sorulan Sorular

MySQL varsayılan olarak hangi portu kullanır?

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.

Kullanıcıya '%' ile her yerden erişim vermek sakıncalı mı?

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.

SSH tüneli için veritabanı portunu açmam gerekir mi?

Hayır. Tünelde veritabanı yalnızca sunucunun içinden erişilir; dışarıya açık olan tek port SSH portudur.

Power BI gibi bir araç uzak MySQL bağlantısıyla çalışır mı?

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.


Powered by WISECP
Top