Na minha caixa OpenBSD eu tenho o seguinte crontab para o usuário _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);"
O primeiro teve como objetivo fazer backup dos bancos de dados mysql nesta caixa. Agora percebo que esses trabalhos não estão em execução porque o usuário _mysql teve permissão de conexão negada (confirmei que a senha do usuário _mysql está correta).
Então, estou pensando que deveria ter esses trabalhos no crontab de um usuário diferente, mas quais (presumo que não deveriam estar no crontab do root)? Então, estou procurando sugestões sobre como configurar isso. Ou preciso alterar minha configuração do mysql.
Editar
O script está no mesmo servidor que a base de dados. Esta entrada crontab falha com o erro
connect(';host=localhost;mysql_read_default_group=mysqlhotcopy','',...) falhou: Acesso negado para o usuário '_mysql'@'localhost' (usando senha: YES) em /usr/local/bin/mysqlhotcopy linha 178 aigaion_copy DBI
Responder1
Você pode usar expire_logs_days=5 em seu my.cnf para executar a mesma função que seu segundo cron job. Provavelmente é mais confiável.
Responder2
O usuário do sistema que executa o cronjob (_mysql) não deve importar em relação ao usuário que está se conectando ao banco de dados (root). A única coisa seria o nome do host/ip do servidor do qual o script está se conectando.
O script está no mesmo servidor do banco de dados? Qual é o erro exato que você recebe ao tentar executar os comandos?
Responder3
O usuário '_mysql'@'localhost' não possui as permissões necessárias dentro do banco de dados de acordo com a mensagem de erro postada.
Você precisa conceder a este usuário as permissões necessárias ou usar credenciais diferentes dentro do seu script /backup/mysql_backup/mysql_backup.sh.