在阿里云服务器增加一个shell脚本定时备份数据库脚本执行任务时,测试性的执行了备份命令,如下
[root@iZ2ze503xw2q1fftv5rhboZ mysql_bak]# /usr/local/mysql/bin/mysqldump -uroot -pmyServerPwd# dateabase > /data/mysql_bak/bak_test.sql
在执行完了命令本该在指定的目录下出现bak_test.sql文件,然而并没有生成,报了一行错误。这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。
mysqldump: [Warning] Using a password on the command line interface can be insecure.
网上大部分给出的解决方案都是修改mysql的配置文件,给[client]选项增加三行命令
vim /etc/my.cnf
[client] port = 3306 socket = /tmp/mysql.sock default-character-set = utf8mb4 host = localhost //地址 user = root //用户 password = 'myServerPwd' //密码
在增加了三行代码,我习惯性的重启了mysql服务,再同样执行备份命令,发现还是出现错误。
在搜索各种方案的过程中也无意中发现关于此方法在安全性上的一些官方性不足,mysql的官方给出的说明。
https://dev.mysql.com/doc/refman/5.6/en/password-security-user.html?spm=5176.7737807.2.3.D6p7hh
然后针对高版本Mysql备份数据库的解决方案来了,前方高能~~~
命令和以前常用的快速导入和导入命令有所不同了,需要加载我们配置的MYSQL配置文件!
/usr/local/mysql/bin/mysqldump --defaults-extra-file=/etc/my.cnf database > /data/mysql_bak/bak_test.sql //备份导出数据库
/usr/local/mysql/bin/mysql --defaults-extra-file=/etc/my.cnf database < test_db.sql //导入数据库
查看/data/mysql_bak下,发现想要的数据库备份文件出现了~