使用 mysqldump 控制台转义密码

使用 mysqldump 控制台转义密码

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

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

我该如何逃脱密码?

答案1

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

创建一个名为如下的控制文件/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

我从来没有弄清楚如何--defaults-file对 mysql 使用类似的参数,但是由于这个命令运行得相当快,所以暴露的风险要低得多...尽管这确实应该得到修复。

答案2

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

有用?

相关内容