В моем окне OpenBSD у меня есть следующий crontab для пользователя _mysql
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)? Итак, я ищу предложения, как это настроить. Или мне нужно изменить мою конфигурацию mysql.
редактировать
Скрипт находится на том же сервере, что и база данных. Эти записи crontab не работают с ошибкой
connect ('; host = localhost; mysql_read_default_group = mysqlhotcopy', '', ...) не удалось: доступ запрещен для пользователя '_mysql' @ 'localhost' (с использованием пароля: YES) в / usr / local / bin / mysqlhot, скопируйте строку 178 aigaion_copy DBI
Вы можете использовать expire_logs_days = 5 в my.cnf для выполнения той же функции, что и ваше второе задание cron. Наверное, надежнее.
Системный пользователь, выполняющий cronjob (_mysql), не должен иметь значения по отношению к пользователю, подключающемуся к базе данных (root). Единственное, что это имя хоста / ip сервера, с которого подключается скрипт.
Находится ли сценарий на том же сервере, что и база данных? Какую именно ошибку вы получаете при попытке запустить команды?
Согласно опубликованному сообщению об ошибке, у пользователя '_mysql' @ 'localhost' нет необходимых разрешений внутри БД.
Вам необходимо предоставить этому пользователю необходимые разрешения или использовать другие учетные данные внутри вашего /backup/mysql_backup/mysql_backup.sh скрипта.