mysqldump solicitando senha no shellscript

9

Eu escrevi um script shell simples para despejar um banco de dados mysql específico. O problema é que ele está solicitando uma senha, mesmo que eu forneça. O mysql db é a versão 5.0.27, se isso importa. Aqui está a linha específica que estou usando.

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

Eu tentei várias variações, mas sem sucesso.

aduljr
fonte

Respostas:

4

Eu apostaria que $MyPassnão está sendo definido corretamente no seu script. Se alguma das ferramentas de linha de comando do mysql receber uma -pque não seja imediatamente seguida por uma senha, elas assumem que devem solicitar a senha. Se, por outro lado, você fornecesse uma senha incorreta (ou o nome de usuário errado ou similar), ela simplesmente não conseguiria se conectar.

Então, sugiro colocar um echocomando no início dessa linha e executar novamente o script, da seguinte maneira:

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

Não se esqueça de remover o redirecionamento de saída.

Insyte
fonte
1
doh, era a variável estúpida, passava em maiúsculas quando foi definida vs minúscula na linha acima. Obrigado rapazes
aduljr
18

Uma solução melhor seria armazenar o nome de usuário e a senha em um arquivo de configuração e apontar para esse arquivo de configuração. Ao colocá-lo na linha de comando, qualquer pessoa que possa executar o ps pode encontrar a senha do seu servidor.

Passe o --defaults-extra-file=/pathto/database.cnfdump para o mysql.

O arquivo de configuração precisa ter esta aparência. Defina as permissões do sistema de arquivos para que apenas o processo de backup possa abrir o arquivo de configuração.

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

Atualização (29-06-2016) Se você estiver executando o mysql 5.6.6 ou superior, consulte a ferramenta mysql_config_editor que permite armazenar credenciais em um arquivo criptografado. Agradeço a Giovanni por mencionar isso para mim.

Zoredache
fonte
é um usuário específico para esse banco de dados com apenas permissão suficiente para executar um backup. Apenas duas pessoas têm acesso a este servidor, meu e uma outra pessoa. Mas usarei essa ideia de arquivo cnf. nunca soube dessa opção. graças
aduljr
3
Sei que essa é uma resposta antiga, mas ainda aparece ao pesquisar como passar a senha com segurança e também está vinculada a outras postagens. Usando a versão 5.5, tive que encapsular a senha forte em marcações simples no arquivo de configuração, como se minha senha fosse aoeu1234, meu arquivo de configuração possui password = 'aoeu1234'; caso contrário, você receberá um erro não autorizado.
Damon
Pensando se há uma solução que não inclua uma senha em texto não criptografado em um arquivo .cnf.
Bob Stein
@ Zoredache, como "quem pode executar o ps pode encontrar a senha do seu servidor"?
Pacerier 15/01
@ Damon, e se sua senha tiver esses ticks?
Pacerier 15/01