cronjob ejecutando mysql y se le deniega el acceso root

cronjob ejecutando mysql y se le deniega el acceso root

archivo de trabajo cron:

46 13 * * * raíz /home/tmp/test_mysql.sh

guion:

ejecutar la solicitud(){
    consulta="$1"
     res=`mysql --skip-column-names -e "$consulta"`
    eco "$res"
}

res=`execute_query "mostrar bases de datos"`
eco $res

Error que obtuve cuando el trabajo cron ejecuta el script correctamente:

ERROR 1045 (28000): Acceso denegado para el usuario 'root'@'localhost' (usando contraseña: NO)

Puedo ejecutar el script exitosamente desde la línea de comando como root porque las credenciales de inicio de sesión para mysql están guardadas en /root/.my.cnf. ¿Qué pasa? ¿cronjob de alguna manera no lee /root/.my.cnf?

Respuesta1

No debe confiar en el cliente MySQL para seleccionar el archivo de configuración MySQL apropiado debido a lanaturaleza en cascadade cómo el cliente está leyendo esos archivos. En su lugar, deberías poner tanto tu my.cnfcomo test_mysql.shdentro /home/tmpy usar --defaults-extra-file[enlace] parámetro en su secuencia de comandos.

Tome nota, las --defaults-extra-filenecesidades deben ser lasprimeroargumento de su comando mysql, de lo contrario no 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

/rootno es un muy buen lugar para colocar cosas (permisos, etc.) y debe evitarse.

La ejecución de scripts que interactúan con un servidor MySQL también debe realizarse con un usuario sin privilegios.

información relacionada