cronjob executando mysql e obtém acesso root negado

cronjob executando mysql e obtém acesso root negado

arquivo de tarefa cron:

46 13 * * * raiz /home/tmp/test_mysql.sh

roteiro:

execute_query(){
    consulta="$1"
     res=`mysql --skip-column-names -e "$query"`
    eco "$ res"
}

res=`execute_query "mostrar bancos de dados"`
ecoar $res

erro que recebi quando o cron job executa o script com sucesso:

ERRO 1045 (28000): Acesso negado ao usuário 'root'@'localhost' (usando senha: NO)

Posso executar o script com sucesso na linha de comando como root porque as credenciais de login do mysql estão salvas em /root/.my.cnf, o que há de errado? o cronjob de alguma forma não está lendo /root/.my.cnf?

Responder1

Você não deve confiar no cliente MySQL para obter o arquivo de configuração MySQL apropriado por causa donatureza em cascatade como o cliente está lendo esses arquivos. Em vez disso, você deve colocar seu my.cnfe test_mysql.shdentro /home/tmpe usar --defaults-extra-file[link] parâmetro em seu script.

Tome nota, as --defaults-extra-filenecessidades devem ser asprimeiroargumento do seu comando mysql, caso contrário não funcionará.

execute_query(){
    query="$1"
     res=`mysql --defaults-extra-file=/home/tmp/my.cnf --skip-column-names -e "$query"`
    echo "$res"
}

res=`execute_query "show databases"`
echo $res

/rootnão é um lugar muito bom para colocar coisas (permissões, etc.) e deve ser evitado.

A execução de scripts que interagem com um servidor MySQL também deve ser realizada com um usuário não privilegiado.

informação relacionada