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.