como usar uma senha de duas palavras em uma variável de script?

0

Estou tentando criar um script para automatizar o processo de backup de um banco de dados existente.

O problema que estou tendo é passar para o comando mysqldump (veja abaixo) a senha do banco de dados que tem duas palavras separadas por um espaço em branco.

# database credentials
DATABASEHOST="localhost"
DATABASEUSER="username"
DATABASEPASSWORD="Compound Password"
DATABASESCHEMA="schema"

# Local directory of mysqldump file
LOCALDIR=/home/user/db-bkp

#--- end config

mysqldump --host=$DATABASEHOST --user=$DATABASEUSER --password=$DATABASEPASSWORD $DATABASESCHEMA > $LOCALDIR/'date +%Y%m%d'_bkp_$DATABASESCHEMA.sql

Quando executo o script, a mensagem relacionada mysqldump relevante é:

mysqldump: Got error: 1045: "Access denied for user 'username'@'localhost' (using password: YES)" when trying to connect

O que estou fazendo de errado aqui e como resolvê-lo?

    
por gtludwig 08.02.2017 / 11:33

1 resposta

5

Cite suas variáveis:

mysqldump --host="$DATABASEHOST" \
          --user="$DATABASEUSER" \
          --password="$DATABASEPASSWORD" \
          --database="$DATABASESCHEMA" \
  > "$LOCALDIR"/"$(date +%Y%m%d)_bkp_$DATABASESCHEMA.sql"

Veja também: Implicações de segurança de esquecer de citar uma variável em shells bash / POSIX

    
por 08.02.2017 / 11:35