使用mysqldump控制台转义密码

我正在通过bash脚本运行mysqldump,并遇到包含特殊字符的密码问题。

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

我如何转义密码?

更好的是,不要把用户名或密码放在命令行上,任何人都可以看到ps -ef

创build一个类似/etc/mysqldump.cnf的控制文件:

 [client] user=root password=YOUR_MYSQL_ROOT_PASSWORD 

…其中client是文字(不是您的服务器的名称)和YOUR_MYSQL_ROOT_PASSWORD是…以及您的MySQL根密码。

然后像这样调用:

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

我个人的调用更像这样:

 #!/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 

我从来没有想过如何为mysql使用类似的--defaults-file参数,但是由于这个命令的运行速度相当快,暴露的风险要低得多……尽pipe这应该是固定的。

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

有用?