📑 İçindekiler

    E-ticaret siteleri, mobil uygulamalar, üyelik sistemleri veya bloglar fark etmeksizin web sitenizin en değerli verileri (kullanıcı şifreleri, siparişler, ayarlar ve içerikler) MySQL veritabanında saklanır. Dosyalarınızı kaybetseniz bile kodları yeniden yazabilirsiniz, ancak veritabanınızı kaybetmek telafisi mümkün olmayan maddi ve manevi zararlara yol açar. Bu yazımızda, MySQL veritabanınızı korumak için uygulayabileceğiniz en iyi güvenlik ayarlarını ve yedekleme stratejilerini derledik.

    1. MySQL Veritabanı Güvenliği (Sıkılaştırma Önlemleri)

    Veritabanınızın yedeklenmesi kadar, dışarıdan gelebilecek saldırılara karşı korunması da kritiktir. Sızmaları engellemek için şu temel adımları uygulayın:

    Dışarıdan Erişimi Kapatın (Bind Address)

    MySQL sunucunuzun dış dünyaya açık olması büyük bir güvenlik açığıdır. Sadece localhost (sunucu içi) bağlantılara izin vermek için my.cnf veya mysqld.cnf dosyanızdaki bind-address ayarını kontrol edin:

    bind-address = 127.0.0.1

    Bu ayar sayesinde veritabanınıza sunucu dışından doğrudan bağlantı denemeleri engellenir.

    Root Kullanıcısı ile Uzaktan Bağlantıyı Engelleyin

    MySQL root kullanıcısına tam yetki verilmiştir ve genellikle kaba kuvvet (brute-force) saldırılarının hedefidir. Root kullanıcısının sadece sunucu içinden bağlanabilmesini garanti altına alın:

    ALTER USER 'root'@'%' IDENTIFIED BY 'CokGucluSifre123!';
    -- Sadece localhost erişimi için:
    RENAME USER 'root'@'%' TO 'root'@'localhost';

    🚨 Fidye Yazılımları ve Veri İhlalleri

    Son yıllarda otomatik botlar, zayıf şifrelere sahip ve dışarıya açık MySQL portlarını (3306) tarayarak verileri şifrelemekte ve fidye talep etmektedir. Güçlü şifreler ve lokal erişim sınırlaması bu riskleri önemli ölçüde azaltır.

    2. En Güvenli mysqldump Yedekleme Yöntemi

    MySQL veritabanlarını yedeklemenin en yaygın yolu mysqldump komutunu kullanmaktır. Ancak büyük veritabanlarında yedek alırken tabloların kilitlenmesini engellemek için doğru parametreleri kullanmak gerekir:

    mysqldump --single-transaction --quick --lock-tables=false -u kullanıcı_adı -p veritabanı_adı > yedek.sql
    • --single-transaction: Tabloları kilitlemeden yedek almayı sağlar. Siteniz aktifken yedek alırken işlemler duraklamaz.
    • --quick: Büyük veritabanlarında belleğin aşırı kullanımını engelleyerek verileri doğrudan dosyaya yazar.

    3. MySQL Artımlı (Incremental) Yedekleme Nedir?

    Veritabanınız 5 GB veya daha büyükse, her gün sıfırdan tam yedek (Full Backup) almak hem sunucu işlemcisini yorar hem de disk alanını hızla tüketir.

    Artımlı Yedekleme (Incremental Backup), sadece son yedekten sonra değişen veya yeni eklenen satırları yedekler. MySQL'in binary log teknolojisi kullanılarak yapılan bu yedekleme, disk alanından ve sunucu trafiğinden ciddi tasarruf sağlar.

    4. Yedekalma ile Güvenli ve Otomatik MySQL Yedeklemesi

    Yedeklerinizi manuel olarak alıp saklamak zahmetlidir ve insan hatasına açıktır. Yedekalma, MySQL veritabanınızı sunucunuzdan otomatik ve güvenli bir şekilde yedekler:

    • İsteğe Bağlı AES-256 Şifreleme: Açtığınızda SQL veritabanı yedeğiniz sitenizin sunucusunda, yalnız sizin bildiğiniz parolayla şifrelenir ve depolamanıza şifreli gider; parola bizde saklanmaz, biz de açamayız.
    • 8 Katmanlı Doğrulama: Her yedekte kapsam, veritabanı dökümünün tamlığı, bütünlük ve yedeğin hedefte durup durmadığı otomatik kontrol edilir; ayrıca haftalık örnek geri yükleme denemesinde seçilen arşivler sunucunuzda indirilip açılabildiği doğrulanır.

    Sık Sorulan Sorular

    MySQL veritabanı yedeği nasıl alınır?

    En yaygın yol mysqldump komutudur: `mysqldump -u kullanici -p veritabani > yedek.sql`. Şifreyi komut satırına yazmayın (işlem listesinde görünür); bunun yerine ~/.my.cnf dosyası ya da --defaults-extra-file kullanın. Küçük veritabanları için phpMyAdmin'in Dışa Aktar sekmesi de yeterlidir, ancak büyük tablolarda PHP zaman aşımına takılabilir.

    MySQL yedeği ne sıklıkla alınmalı?

    Ölçüt, kaybetmeyi göze alabileceğiniz veri süresidir (RPO). Statik bir tanıtım sitesinde haftalık yedek yeterli olabilir; her gün içerik girilen bir sitede günlük, sipariş alan bir e-ticaret sitesinde ise saatlik yedek gerekir — çünkü orada bir saatlik kayıp doğrudan sipariş kaybı demektir.

    Veritabanı yedeğinde artımlı (incremental) yedekleme kullanılabilir mi?

    Satır düzeyinde değil, tablo düzeyinde kullanılabilir: mysqldump her çalıştığında seçilen tabloların tamamını üretir; yarım bir döküm geri yüklenemez. Yedekalma'nın PHP Yedekleme Modülü'nde artımlı mod isteğe bağlıdır: dosyalarda değişiklik zamanına, e-postada IMAP UID'ye bakar; veritabanında ise bir tam yedekten sonra yalnız tablo düzeyindeki sağlama toplamı (CHECKSUM) değişen tablolar yeniden dökülür. Bu döküm her zaman son tam yedeğe göre alınır (diferansiyel); elle başlatılan yedekler her zaman tamdır ve tam yedek belirli aralıklarla tazelenir. WordPress eklentisinde ve çok büyük sitelerin parçalı modunda ise veritabanı artımlı değildir; her çalıştırmada tam döküm alınır. Gerçek artımlı veritabanı kurtarması binlog tabanlı PITR ile yapılır ve ayrı bir konudur.

    Veritabanı şifremi yedekleme servisiyle paylaşmam gerekir mi?

    Gerekmez. Yedekalma'da döküm, sitenizin kendi sunucusunda çalışan PHP modülü tarafından alınır; MySQL kullanıcı adı ve şifresi sizin sunucunuzdaki yapılandırma dosyasında kalır, Yedekalma sunucusuna gönderilmez. Panel yalnızca yedeğin meta verisini (boyut, tarih, checksum) görür.

    Veritabanı Güvenliğinizi Şansa Bırakmayın!

    Yedekalma ile 5 dakikada MySQL yedekleme planınızı oluşturun, verilerinizi otomatik olarak kendi bulut depolama alanlarınızda, isteğe bağlı şifrelemeyle saklayın.

    Ücretsiz Denemeyi Başlat