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 aigaion_copy DBI,用户 '_mysql'@'localhost' (使用密码:是) 的访问被拒绝

答案1

您可以在 my.cnf 中使用 expire_logs_days=5 来执行与第二个 cron 作业相同的功能。它可能更可靠。

答案2

运行 cronjob 的系统用户 (_mysql) 与连接到数据库的用户 (root) 无关。唯一重要的是脚本连接的服务器主机名/ip。

脚本和数据库位于同一台服务器上吗?尝试运行命令时您遇到的具体错误是什么?

答案3

根据发布的错误消息,用户“_mysql”@“localhost”在数据库内没有必要的权限。

您需要授予该用户必要的权限或在 /backup/mysql_backup/mysql_backup.sh 脚本中使用不同的凭据。

相关内容