MySQL equivalente a .pgpass, o autenticación automática en un trabajo cron para mySQL

8

Estoy escribiendo un script bash para hacer una copia de seguridad de mis bases de datos. La mayoría son postgresql, y en postgres hay una manera de evitar tener que autenticarse creando un archivo ~ / .pgpass que contenga la contraseña de postgres. Puse esto en el directorio de inicio de root y lo hice chmod 0600, para que root pueda volcar las bases de datos de postgres sin tener que autenticarse. Ahora quiero hacer algo similar para mysql, aunque solo tengo una base de datos mysql. ¿Cómo puedo hacer esto? No quiero especificar la contraseña en la línea de comando para mysqldump porque es parte de un script que puede ser algo visible para otros usuarios. ¿Hay una mejor manera (es decir, integrada en mysql) para hacer esto que hacer un archivo que solo la raíz pueda leer y luego leer para obtener la contraseña de mysql y luego usar eso en el script bash como variable?

Ibrahim
fuente
Hmm, extrañamente, encontré algo prometedor a través de google en lugar de la propia búsqueda de serverfault: stackoverflow.com/questions/601995/…
Ibrahim
Sí, bleh, aparentemente falta mi búsqueda de fu.
Ibrahim

Respuestas:

6

Cree un ~/.my.cnfarchivo para el usuario que ejecuta mysql. Debe contener lo siguiente:

[client]
user = root
password = yourpassword
Warner
fuente
Supongo que una cosa que debo agregar es que si ejecuta el script usando sudo, debe usar -H para asegurarse de que usa el directorio de inicio de root. Pero creo que ese problema no debería ser un problema en un trabajo de cron root, ¿correcto?
Ibrahim
3
Pero, ¿cómo se maneja eso para varias cuentas? Eso funcionará para localhost, pero ¿qué pasa si quiero almacenar mi inicio de sesión para un servidor remoto?
Cerin