Saltar al contenido

Usando mysqldump en trabajo cron sin contraseña de root

La guía o código que hallarás en este post es la resolución más eficiente y válida que hallamos a esta duda o problema.

Solución:

Solución 1:

Para conectarse al servidor mysql debe proporcionar credenciales. Puede especificarlos en un archivo de configuración, pasarlos a través de la línea de comando o simplemente crear una cuenta que no requiera credenciales.

Por supuesto, la opción sin contraseña nunca debe usarse, la línea de comando de paso no es excelente porque cualquier persona que pueda ejecutar ps puede ver la línea de comando.

La opción recomendada es crear un archivo de configuración mysql con las credenciales y luego proteger ese archivo con permisos del sistema de archivos para que solo su usuario de respaldo pueda acceder a él.

El hecho de que pueda iniciar sesión en el servidor mysql mientras está conectado de forma interactiva como root parece sugerir que no tiene una contraseña de root configurada o que tiene un archivo de configuración que su secuencia de comandos no encuentra. Si tiene un .my.cnf, es posible que deba señalarlo manualmente. Si su cuenta raíz no tiene una contraseña configurada, le recomiendo encarecidamente que la arregle.

Actualización (2016-06-29) Si está ejecutando mysql 5.6.6 o superior, debe consultar la herramienta mysql_config_editor que le permite almacenar credenciales en un archivo cifrado. Gracias a Giovanni por mencionarme esto.

Solución 2:

La seguridad no debe hacerse a través de la oscuridad. Si tiene miedo de que alguien tenga acceso a su cuenta raíz, no importa si la contraseña mysql de la raíz está almacenada en el script, ya que tiene todos sus datos disponibles en volcados mysql o archivos de base de datos. Entonces, la verdadera pregunta es ¿qué estás tratando de proteger?

Si no desea que otros obtengan una contraseña que les permita cambiar los datos en su base de datos, deberá crear un usuario con los permisos adecuados.

Si no desea que ninguna cuenta local vea la contraseña de mysql, excepto la raíz, configure los permisos de archivo en ese script para que sean 0700 y el propietario sea raíz.


Solución 3:

Su uso de shell puede hacerlo porque tiene un shell para ejecutarlo, es decir, cuando inicia sesión, se ejecutan todos los scripts de shell en su perfil.

Cron no tiene esos lujos. Cuando inicie sesión (como root), iniciará sesión con un shell predeterminado. Esto evita que cualquier persona inicie sesión de forma remota, pero también significa que no se ejecutan scripts de inicio de sesión automático.

Puede configurar un shell para que se ejecute cron, editar el crontab y agregar las variables SHELL y HOME, por ejemplo.

SHELL=/bin/bash
HOME=/root

si no están configurados, cron se ejecutará con el shell y el directorio de inicio especificados en /etc/passwd (que probablemente no sean nada, posiblemente /bin/sh).

Si desea ver el entorno en el que se ejecuta cron, agregue un trabajo cron que exporte env a un archivo, por ejemplo:

$crontab -e
* * * * * env > /tmp/crontabenv.log
:wq

Puntuaciones y reseñas

Si crees que ha sido de utilidad este artículo, nos gustaría que lo compartas con más entusiastas de la programación de esta forma nos ayudas a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *