crontab用於mysql資料庫清理和備份

crontab用於mysql資料庫清理和備份

在我的 OpenBSD 機器上,我有以下使用者 _mysql 的 crontab

0 4 * * * /backup/mysql_backup/mysql_backup.sh
0 9 * * 1 mysql -uroot -pMySQLpassword -e "purge master logs before date_sub(now(),interval 5 day);"

第一個目的是備份此機器上的 mysql 資料庫。我現在意識到這些作業尚未運行,因為用戶 _mysql 被拒絕連接權限(我已確認 _mysql 用戶的密碼是正確的)。

所以,我想我應該將這些作業放在不同使用者的 crontab 中,但是哪一個(我認為它們不應該放在 root 的 crontab 中)?因此,我正在尋找有關如何配置此功能的建議。或者我需要改變我的mysql配置。

編輯

該腳本與資料庫位於同一伺服器上。這些 crontab 條目失敗並出現錯誤

connect(';host=localhost;mysql_read_default_group=mysqlhotcopy','',...) 失敗:在 /usr/local/bin/mysqlhotcopy 第 178 行拒絕使用者 '_mysql'@'localhost' 存取(使用密碼:YES) aigaion_copy DBI

答案1

您可以在 my.cnf 中使用 expire_logs_days=5 來執行與第二個 cron 作業相同的功能。這可能更可靠。

答案2

執行 cronjob (_mysql) 的系統使用者與連接到資料庫的使用者 (root) 無關。唯一的事情就是腳本連接的伺服器主機名稱/IP。

腳本與資料庫位於同一伺服器上嗎?嘗試運行命令時出現的確切錯誤是什麼?

答案3

根據發布的錯誤訊息,使用者「_mysql」@「localhost」在資料庫內部沒有必要的權限。

您需要授予此使用者必要的權限或在 /backup/mysql_backup/mysql_backup.sh 腳本中使用不同的憑證。

相關內容