bat批处理备份Mysql数据库1045问题

526 阅读1分钟

问题:
(bat文件如下,运行报错)

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

@echo off

set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"

mysqldump -uroot -p"Jzd%0820" --databases aircrew >F:/db_backup/db_aircrew%Ymd%.sql
forfiles /p "F:\db_backup" /s /m . /d -7 /c "cmd /c del @path"

@echo on

原因分析:

1.Mysql设置了root账户访问策略,批处理程序调用cmd二次访问被拒绝。action:新增用户,设置了全部权限仍然无效。

2.bat文件所处位置不对。action:将bat放置在bin文件夹下仍无效。

3.百度mysqldump:1045错误:大部分解决方法是“密码加双引号即可”,仍然无效。

3.通过新增简单的用户和密码,发现访问正确,再仔细观察密码格式,发现密码中带有bat的特殊字符%,因此bat会将密码中的%当作特殊字符作特殊处理,至此问题解决。(转义方法:加%或者\皆不正确)