Solução de texto curto: comente HOME = / directive no seu arquivo / etc / crontab
Agora explique:
Eu encontrei este tópico porque meu script de backup mysql, liberando bin-logs, funcionou muito bem interativamente, mas falhou quando o cron. Mas ocorreu que minha configuração foi um pouco diferente da de Rudra, então a causa raiz e a solução também, mas ainda deixe-me postar aqui para outras pessoas com a mesma configuração que eu.
Ok, minha diferença da configuração do Rudra é que eu não passo nome de usuário e senha para mysqladmin no script. Em vez disso, configuro como sugerido em “6.1.2.1. Diretrizes para o usuário final para segurança de senha ”da documentação do MySQL ( link ) ou seja, na seção [cliente] do arquivo ~ / .my.cnf do root.
O Linux resolve resolve ~ nos valores da variável de ambiente HOME. daemon cron (como por homem 5 crontab) “Várias variáveis de ambiente são configuradas automaticamente pelo daemon cron (8). SHELL é definido como / bin / sh, e LOGNAME e HOME são definidos a partir da linha / etc / passwd do proprietário do crontab. HOME e SHELL podem ser substituídas por configurações no crontab ”
Então, com essa configuração “mysqladmin flush-logs” deve funcionar muito bem sem passar a senha como um parâmetro de linha de comando, mas NÃO. E a razão para isto ocorreu que (por alguma razão) o arquivo padrão / etc / crontab (pelo menos no CenOS 6.2) tem uma diretiva HOME = /, sobrescrevendo a configuração como descrito em man.
Então, comente em seu / etc / crontab e veja que ajuda você!
Felicidades,
Romano.