在我的 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','',...) failed: Access denied for user '_mysql'@'localhost' (using password: YES) at /usr/local/bin/mysqlhotcopy line 178 aigaion_copy DBI
您可以在 my.cnf 中使用 expire_logs_days=5 来执行与第二个 cron 作业相同的功能。它可能更可靠。
运行 cronjob (_mysql) 的系统用户与连接到数据库的用户 (root) 无关。唯一的事情是脚本连接的服务器主机名/ ip。
脚本与数据库在同一台服务器上吗?尝试运行命令时遇到的确切错误是什么?
根据发布的错误消息,用户 '_mysql'@'localhost' 在数据库内部没有必要的权限。
您需要授予此用户必要的权限或在 /backup/mysql_backup/mysql_backup.sh 脚本中使用不同的凭据。