Navicat 远程连接 MySQL 报“Access denied”是因账号授权范围受限(如仅 localhost)、认证插件不兼容(MySQL 8+ 的 caching_sha2_password)或 mysqldump 密码含特殊字符未转义;Windows 自动备份失败常因权限不足、路径非法或网络凭据缺失。
Navicat 连接远程 MySQL 报错 Access denied for user 'xxx'@'xxx' (using password: YES)
这不是 navicat 的问题,而是 mysql 服务端明确拒绝了该账号从当前 ip 的登录请求。常见于跨服务器备份时用本地账号连远程库,但账号只允许 localhost 或内网 ip 登录。
- 先确认账号授权范围:
SELECT host, user FROM mysql.user WHERE user = 'your_user';—— 如果host是localhost,那它根本不能从其他机器连 - 临时测试可加授权:
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' IDENTIFIED BY 'your_pass'; FLUSH PRIVILEGES;(生产环境慎用%,应限定为具体 IP 或子网) - MySQL 8+ 默认认证插件是
caching_sha2_password,旧版 Navicat 可能不兼容,需显式指定:ALTER USER 'your_user'@'%' IDENTIFIED WITH mysql_native_password BY 'your_pass';
Windows 下 Navicat 自动任务以“管理员身份运行”却仍失败
“管理员运行”对 Navicat 本身没意义——它不操作系统级资源(如注册表、驱动),真正卡权限的是它调用的备份命令(比如 mysqldump)或写入目标路径的权限。
- 检查
mysqldump路径是否在系统PATH中;如果 Navicat 配置里写了绝对路径,确认该路径下文件存在且未被杀毒软件拦截 - 备份目标目录(比如
D:ackup)必须对运行 Navicat 的 Windows 用户有写入权限;若用计划任务触发,注意“不管用户是否登录都要运行”选项会导致它以SYSTEM身份执行,而SYSTEM没法访问网络盘或带 UAC 保护的用户目录 - 避免把备份路径设在
C:Program Files或C:UsersXXXAppData这类默认受保护路径下
自动备份脚本中 mysqldump 报错 Got error: 1045: Access denied
这是 Navicat 在后台调用 mysqldump 时传参出错,最常见是密码含特殊字符(比如 @、$、!)没转义,导致命令解析失败,最终以空密码尝试连接。
- 在 Navicat 的“自动运行”任务设置里,不要直接填明文密码;改用配置文件方式:
mysqldump --defaults-file=C:safe.cnf -h host -u user db_name,其中C:safe.cnf权限设为仅当前用户可读(icacls C:safe.cnf /inheritance:r /grant:r "%USERNAME%":R) - 如果必须传密码,Windows 命令行中
$、^、&等要双写或加^转义,但更稳妥的做法是删掉密码字段,让mysqldump交互式提示(自动任务里不行,所以还是推荐配置文件) - Navicat 15+ 支持“使用保存的连接信息”,勾选后它会复用连接管理器里的认证参数,比手动填命令行更可靠
备份任务显示成功但实际没生成 SQL 文件
Navicat 的“执行成功”只代表 mysqldump 进程退出码为 0,并不代表数据真的导出了——比如磁盘满、目标路径不存在、文件名含非法字符(:、*、?)都会静默失败。
- 打开 Navicat 的“自动运行日志”,看完整输出,重点找
Warning:行和最后一行是否真有dump completed - 备份路径建议用绝对路径,且提前手工创建好父目录;文件名模板避免用
Y-m-d H:i:s这种含冒号的格式(Windows 不允许),改用Y-m-d_H-i-s - 如果目标是网络共享路径(如
\192.168.1.100ackup),确保运行 Navicat 的 Windows 用户已映射该路径或凭据已存入 Windows 凭据管理器
跨服备份真正的难点不在 Navicat 界面操作,而在 MySQL 账号网络权限、Windows 进程上下文权限、命令行参数转义这三处咬合。漏掉任意一个,都会表现为“明明点了运行,却什么都没发生”。










