MySQL Veritabanı Yedeği Güvenli Olarak Nasıl Alınır?

MySQL veritabanı yedeğini almanın en kolay yolu mysqldump komutunu kullanmaktır. Yedekleme işlemini otomatik hale getirmek için ise crontab kullanabiliriz. Bu işlem için ise genellikle crontab’a aşağıdaki komutu ekleriz.


00 2 * * * root mysqldump -u root -pPASSWORD --all-databases > /var/mysqldump

Burada mysqldump komutuna şifreyi -p parametresi ile geçiyoruz. Bu şekilde komut çalışırken giriş yapmış herhangi bir kullanıcı ps aux komutu ile işlem tablosuna bakarak şifreyi görebilir. Buradaki hata girdisine verilmiş cevabı da okuyabilirsiniz.

Çözüm olarak öncelikle yedek alacağınız kullanıcının şifresini aşağıdaki formatta bir dosyaya kayıt ediyoruz.

[mysqldump]
password=PASSWORD

Dosyayı /root/mysqldump.cnf olarak kayıt edebilirsiniz. Aşağıdaki komut ile dosyayı sadece root kullanıcısının okuyabileceği şekilde yetkilerini ayarlıyoruz.

chmod 400 /var/mysqldump.cnf

crontab‘a eklediğimiz komutu aşağıdaki şekilde değiştiriyoruz. –defaults-extra-file parametresi ilk parametre olması gerekiyor.


00 2 * * * root mysqldump --defaults-extra-file=/var/mysqldump.cnf -u root --all-databases > /var/mysqldump

MySQL veritabanı yedeklerinizi alırken root kullanıcı kullanmak yerine yetkileri kısıtlanmış bir kullanıcı oluşturup onu kullanmanız daha güvenli olacaktır. Bunun için MySQL sunucusuna bağlanarak aşağıdaki şekilde kullanıcıyı oluşturup yedekleme için gerekli yetkileri verebilirsiniz.

$ mysql -uroot -p
mysql> GRANT SELECT ON *.* TO 'bck'@'localhost' IDENTIFIED BY [PASSWORD];
mysql> GRANT LOCK TABLES ON *.* TO 'bck'@'localhost';
mysql> GRANT RELOAD ON *.* TO 'bck'@'localhost';
mysql> GRANT CREATE, INSERT, DROP ON mysql.ibbackup_binlog_marker TO 'bck'@'localhost';
mysql> GRANT CREATE, INSERT, DROP ON mysql.backup_progress TO 'bck'@'localhost';
mysql> GRANT CREATE, INSERT, DROP ON mysql.backup_history TO 'bck'@'localhost';
mysql> GRANT REPLICATION CLIENT ON *.* TO 'bck'@'localhost';
mysql> GRANT SUPER ON *.* TO 'bck'@'localhost';
mysql> GRANT CREATE TEMPORARY TABLES ON mysql.* TO 'bck'@'localhost';
mysql> FLUSH PRIVILEGES;

Bununla birlikte crontab komutumuzu aşağıdaki şekilde değiştirmemiz gerekiyor.

00 2 * * * root mysqldump --defaults-extra-file=/var/mysqldump.cnf -u bck --all-databases > /var/mysqldump
Print Friendly, PDF & Email

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir