Caracteres especiales en la contraseña de MySQL usando mysqldump

Caracteres especiales en la contraseña de MySQL usando mysqldump

Tengo el siguiente script ssh:

#Here I am getting the mysql password for the root user
password=$(cat /root/.my.cnf | grep "password" |  awk -F\" '{print $2}') 

#here I am trying to dump the database remotely
mysqldump -uroot -p$password $db |  ssh root@$destination_server "cat > /backup/mysql/$db.sql"

El caso es que me sale el siguiente error:

/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `mysqldump -uroot -pbyt)uy6 database_name '

Probé bastante y descubrí que el error se debe al carácter especial en la contraseña. Como obtengo la contraseña del archivo .my.cnf, no puedo escapar codificando los caracteres de escape.

¿Alguien puede ofrecerme una manera de buscar esos caracteres especiales en la variable $contraseña y agregarles barras de escape ("\").

EDITAR: Olvidé mencionar que estoy ejecutando esto a través de la virtualización parcial OpenVZ usando el comando vzctl exec, que es la razón por la que necesitaba un método que me permitiera escapar de los caracteres especiales como lo solicité. El método que tengo como desarrollador fue un uso simple del comando sed:

sed 's/[!-+]/\\&/g' 

Gracias por toda tu ayuda.

¡Atentamente!

Respuesta1

No necesitas hacer nada de esto. Como mencionó HBruijn en un comentario, el $HOME/.my.cnfarchivo ya contiene sus credenciales y las herramientas de línea de comandos de MySQL las usarán automáticamente sin que usted necesite hacer nada especial.

Entonces solo haz:

mysqldump $db |  ssh root@$destination_server "cat > /backup/mysql/$db.sql"

información relacionada