Escapando uma senha usando o console mysqldump

3

Estou executando um mysqldump através de um script bash e encontrei um problema com uma senha que contém caracteres especiais.

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Como faço para escapar da senha?

    
por psynnott 25.03.2010 / 12:09

2 respostas

5

Melhor ainda, não coloque o nome de usuário ou senha na linha de comando, onde pode ser visto por qualquer pessoa que possa fazer ps -ef .

Crie um arquivo de controle chamado algo como /etc/mysqldump.cnf :

[client]
user=root
password=YOUR_MYSQL_ROOT_PASSWORD

... onde client é literal (não o nome do seu servidor) e YOUR_MYSQL_ROOT_PASSWORD é ... bem ... sua senha de root do mysql.

Em seguida, invoque assim:

mysqldump --defaults-file=/etc/mysqldump.cnf DATABASE |                                 gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Pessoalmente, minha invocação é mais assim:

#!/bin/bash
NOW='perl -e 'print time;''
cd /opt/backup/mysql
mkdir $NOW
for i in 'echo "show databases" | mysql -u root --password="MySqlRootPassword" | grep -v Database'; do
        mysqldump --defaults-file=/etc/mysqldump.cnf --databases $i --opt > $NOW/$i.dump
one
tar cfpz $NOW.tgz $NOW
du -sh $NOW $NOW/* > $NOW.report
rm -rf $NOW

Eu nunca descobri como usar um parâmetro --defaults-file similar para o mysql, entretanto, como esse comando é executado rapidamente, o risco de exposição é muito menor ... embora realmente isso deva ser corrigido.

    
por 25.03.2010 / 13:22
2
mysqldump -hlocalhost -uUSERNAME -p'PA$$W0RD' DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Funciona?

    
por 25.03.2010 / 12:33