直接执行此命令,可以备份,但是java在定时任务中执行时,报错
mysqldump -uroot -p'root' dataName > /usr/local/data_back/dataName_2024-04-12_10-26-00.sql
使用查找出命令所在地址
whereis mysqldump
将命令修改为:
/usr/bin/mysqldump -uroot -p'root' dataName > /usr/local/data_back/dataName_2024-04-12_10-26-00.sql
Runtime.getRuntime().exec()执行还不行,尝试使用 ProcessBuilder 执行:
// /bin/bash指定shell linux环境 -c 指定后边为“命令”
ProcessBuilder builder = new ProcessBuilder("/bin/bash", "-c", dumpCommand);
Process process = builder.start();
mysql5.7以后出现警告:
Using a password on the command line interface can be insecure.
解决办法:
在/ete/my.cnf 中添加
[mysqldump]
user=root
password=你的密码
重启服务,修改mysqldump语句,去掉-uroot -p参数
/usr/bin/mysqldump dataName > /usr/local/data_back/dataName_2024-04-12_10-26-00.sql