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
最终成功备份数据库数据
注意:上述方法似乎存在安全隐患,请谨慎使用