编写CMD脚本
@echo off
set MYSQL_PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin
set BACKUP_DIR=D:\MySQLBackup
:: 从任务计划程序传递密码
set MYSQL_PWD=%1
:: 获取日期时间(处理中文系统日期格式)
for /f "tokens=1-3 delims=/ " %%a in ('echo %date%') do (
set YYYY=%%a
set MM=%%b
set DD=%%c
)
:: 处理时间(确保两位数)
set HH=%time:~0,2%
if "%HH:~0,1%"==" " set HH=0%HH:~1,1%
set MIN=%time:~3,2%
set SEC=%time:~6,2%
:: 生成时间戳
set TIMESTAMP=%YYYY%%MM%%DD%_%HH%%MIN%%SEC%
:: 执行备份
"%MYSQL_PATH%\mysqldump.exe" -hlocalhost -P3306 -uroot ^
--all-databases --result-file="%BACKUP_DIR%\backup_%TIMESTAMP%.sql"
任务计划中设置:
程序/脚本: cmd.exe
参数: /c "D:\scripts\backup.bat YourPassword123"
起始于: D:\scripts
将参数写到任务计划中,是因为直接在cmd写,那么会提示mysqldump: [Warning] Using a password on the command line interface can be insecure.这个问题应该是在MySQL5.6+版本的时候就有出现,所以可以采用上述方法将参数移出来解决。