MySQL データベースのクリーンアップとバックアップ用の crontab

MySQL データベースのクリーンアップとバックアップ用の crontab

私の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 に置くべきだと考えていますが、どのユーザーの crontab に置くべきでしょうか (root の crontab には置くべきではないと思います)? そのため、これを構成する方法についての提案を探しています。 それとも、mysql の設定を変更する必要がありますか。

編集

スクリプトはデータベースと同じサーバー上にあります。これらのcrontabエントリはエラーで失敗します

connect(';host=localhost;mysql_read_default_group=mysqlhotcopy','',...) が失敗しました: ユーザー '_mysql'@'localhost' のアクセスが拒否されました (パスワード使用: YES) /usr/local/bin/mysqlhotcopy 行 178 aigaion_copy DBI

答え1

my.cnf で expire_logs_days=5 を使用すると、2 番目の cron ジョブと同じ機能を実行できます。おそらく、より信頼性が高いでしょう。

答え2

cronjob を実行しているシステム ユーザー (_mysql) は、データベースに接続しているユーザー (root) とは関係ありません。唯一重要なのは、スクリプトが接続しているサーバーのホスト名/IP です。

スクリプトはデータベースと同じサーバー上にありますか? コマンドを実行しようとしたときに表示されるエラーは正確には何ですか?

答え3

表示されたエラー メッセージによると、ユーザー '_mysql'@'localhost' には DB 内で必要な権限がありません。

このユーザーに必要な権限を付与するか、/backup/mysql_backup/mysql_backup.sh スクリプト内で別の資格情報を使用する必要があります。

関連情報