mysqldump solicita contraseña en shellscript


9

Escribí un script de shell simple para volcar una base de datos mysql específica. El problema es que me está pidiendo una contraseña a pesar de que la proporcione. El mysql db es la versión 5.0.27 si eso importa. Aquí está la línea específica que estoy usando.

$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE

Intenté varias variaciones, pero fue en vano.

Respuestas:


4

Apuesto a que $MyPassno se está configurando correctamente en su secuencia de comandos. Si alguna de las herramientas de línea de comandos de mysql recibe una -pque no es seguida inmediatamente por una contraseña, asumen que deben solicitarla. Si, por otro lado, proporcionó una contraseña incorrecta (o el nombre de usuario incorrecto o similar) simplemente no se conectaría.

Por lo tanto, sugiero colocar un echocomando al comienzo de esa línea y volver a ejecutar su script, así:

echo $MYSQLDUMP -u backup -p$MyPass $DB

No olvides eliminar la redirección de salida.


1
doh, era la estúpida variable, tenía mayúsculas cuando se configuraba en minúsculas en la línea anterior. gracias chicos
aduljr

18

Una mejor solución sería almacenar el nombre de usuario y la contraseña en un archivo de configuración y apuntar a ese archivo de configuración. Al tenerlo en la línea de comando, cualquiera que pueda ejecutar ps podría encontrar la contraseña de su servidor.

Pase el --defaults-extra-file=/pathto/database.cnfvolcado a mysql.

El archivo de configuración debe tener este aspecto. Establezca los permisos del sistema de archivos para que solo el proceso de copia de seguridad pueda abrir el archivo de configuración.

[client]
host     = servername.domain.tld
user     = backup
password = strongpassword

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.


es un usuario específico para esa base de datos con solo el permiso suficiente para realizar una copia de seguridad. Solo dos personas tienen acceso a este servidor, yo y otra persona. Pero haré uso de esa idea de archivo cnf. Nunca supe de esa opción. gracias
aduljr

3
Sé que esta es una respuesta anterior, pero aún aparece cuando buscas cómo pasar la contraseña de forma segura y también está vinculada desde otras publicaciones. Usando la versión 5.5, tuve que encapsular la contraseña segura en marcas simples en el archivo de configuración, como si mi contraseña es aoeu1234, mi archivo de configuración tiene password = 'aoeu1234'; de lo contrario, recibirá un error no autorizado.
Damon

Preguntándose si hay una solución que no incluya una contraseña en texto sin formato en un archivo .cnf.
Bob Stein

@Zoredache, ¿cómo "cualquiera que pueda ejecutar ps podría encontrar la contraseña de su servidor"?
Pacerier

@Damon, ¿y si tu contraseña tiene estos ticks?
Pacerier
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.