一般使用mysqldump写脚本备份时,常见的是直接将密码明文写在脚本。运行时MySQL客户端跳出警告:

mysqldump: [Warning] Using a password on the command line interface can be insecure.

明文的账号密码,只要有心人拿到,可以对你的数据库任意操作(觉得没人会管你的数据无所谓)。我们需要有一个安全登录解决的方法。mysql_config_editor的–login-path可以完成该工作。

# 添加安全连接 
mysql_config_editor set --login-path=mydb --host=127.0.0.1 --user=root --password  #回车后输入密码,配置存储在¥HOME/.mylogin.conf

#数据库备份脚本增加
mysqldump --login-path=mydb 

完成备份脚本:

#!/bin/bash




source /etc/profile
##在变量中输入需备份的库名
data[1]="information_schema"
data[2]="mysql"
data[3]="performance_schema"
data[4]="sys"


##在变量中输入备份存放绝对路径
bakdir="/xxx/MYSQL_DATA_BAK"

############################################
############################################

time=`date '+%Y%m%d'`
mkdir -p  ${bakdir}/${time}
#循环加载变量
for g in ${data[@]}
do
        mysqldump  --login-path=mydb  --set-gtid-purged=off --skip-opt --create-options --single-transaction -R -q   --events  --triggers  --databases  ${g}  | gzip > ${bakdir}/${time}/${g}-sqlbak.gz
done


#zip打包删除源文件
cd ${bakdir}
zip  -r -q -m ${time}-sqlbak.zip  ${time}

#删除7天前zip文件
find   ${bakdir} -name "*zip"  -mtime +7 -exec  rm -rf  {} \;