在linux服务器增加一个定时备份mysql数据库shell脚本,脚本代码如下:
/usr/local/mysql/bin/mysqldump -uroot -pmyServerPwd# dateabase > /data/mysql_bak/bak_test.sql
在执行该脚本时报了一行错误。
mysqldump: [Warning] Using a password on the command line interface can be insecure.
这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。
网上大部分给出的解决方案都是修改mysql的配置文件,给[client]选项增加三行命令
vim /etc/my.cnf
[client] port = 3306socket = /tmp/mysql.sockdefault-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下,发现想要的数据库备份文件出现了~
另外一个问题:
有些shell脚本这样写:
mysqldump -uroot -pmyServerPwd# dateabase > /data/mysql_bak/bak_test.sql
手动执行脚本是没有问题的,可以备份数据库。可使用定时任务执行脚本,得到的备份数据库文件是空的,原因:
这主要是因为环境变量PATH的问题,系统自动执行定时任务,找不到mysqldump这个可执行文件。所以,mysqldump要写成绝对路径。
/usr/local/mysql/bin/mysqldump -uroot -pmyServerPwd# dateabase > /data/mysql_bak/bak_test.sql
来源:https://www.cnblogs.com/wt645631686/p/7832993.html