问题描述
场景:项目有一个功能是点击按钮后备份数据
出现问题:一直提示我失败,java通过执行mysql在linux上备份语句的方式备份数据库。
- 通过排查日志,发现备份语句看上去没什么。例如:日志打印出如下备份语句
mysqldump --host=127.0.0.1 --port=3306 -uroot -p11!$abcd --opt uag > "/root/backup/testback.sql"
看上去代码也是正确的,密码端口也是对的。后来我直接将备份语句复制到linux上运行,提示密码错误。后来经过排查,密码中的 “!” 在回车运行时会被替换成其它字符,这就导致了密码错误,所以一直提示密码错误。
解决方法
在这里我将密码用单引号括起来。例如:-p'11!$abcd'
,命令运行正确。