mysqldump是备份数据库最常用的方法,通常的做法就是写一个shell脚本,在脚本里面使用mysqldump命令备份,再在cron里面加一个定时任务,一个简易的备份服务就完成了。

通常的写法是这样:

# db config
DbHost=localhost
DbName=mysql
DbUser=user
DbPasswd=DbPasswd

# backup 
mysqldump -h$DbHost -u$DbUser -p$DbPasswd --opt databaseName | gzip -f > /bakup/path/databaseName.sql.gz

如果我们执行这个脚本,mysql会报警告:

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

其实我们自己想一下,把密码直接暴露在shell文件中,肯定是不安全的,因为很有可能服务器被干掉了,然后攻击者还能很方便的拿到数据库的IP、用户密码,这简直就是送大礼。

所以我们需要采用一个方法用来隐藏数据库的IP、用户和密码。

mysql_config_editor(available as of MySQL 5.6.6)就是用来做这个的,这个工具可以把HOST,用户和密码加密放到.mylogin.cnf

执行下面这行命令,创建一个登录信息:

mysql_config_editor set --login-path=mysqldump --host=localhost --user=root --password

–login-path表示的就是该登录信息的名字,叫做mysqldump。该命令会把登录信息加密存入当前用户目录下的.mylogin.cnf。

然后就可以使用了:

# login path which generated by mysql_confgi_editor
LoginPath=mysqldump 

# backup 
mysqldump --logn-path=mysqldump --opt databaseName | gzip -f > /bakup/path/databaseName.sql.gz

这样就隐藏了数据库的登录信息,至少比明文还是要安全一点,当然这个工具是要5.6.6才有的,之前的版本就算明文使用密码,也不会报警告,可见mysql 5.6.6 也改进了安全性。