mysqldump导出数据库数据为空

在做定时任务备份数据库时,用到了mysqldump

mysqldump -u root -p 数据库名称 > /mysql.sql

上述指令,需要输入密码才能备份数据,对于定时任务来说显然不行

于是修改指令

mysqldump -u root -p 数据库密码 数据库名称 > /mysql.sql

结果提示

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

为了屏蔽报错,再次修改指令

mysqldump -u root -p 数据库密码 数据库名称 > /mysql.sql > /dev/null 2>&1

确实不报错了,但备份得到的sql文件却是空的

一番查询后得知,新版本的MySQL由于安全性问题,即便你在指令中输入了密码,屏蔽了报错,还是会终止你的指令。

解决方案

在 ~ 目录下创建 .my.cnf 文件

文件写入

[mysqldump]
user = '数据库用户名'
password = '数据库密码'

设定权限

chmod 600 .my.cnf

再次尝试

#不需要输入密码,也不需要屏蔽报错
mysqldump -u root 数据库名称 > /mysql.sql  

最终成功备份数据库数据

注意:上述方法似乎存在安全隐患,请谨慎使用