Navicat手动备份报错主因有三:权限不足(缺SELECT/LOCK TABLES)、系统级写入失败(Errcode 13)、设置错误(仅结构/快速备份)。应检查账号权限、临时目录权限、备份选项,并查看Navicat日志获取真实错误。
Navicat 手动备份报错:mysqldump: Got error: 1045: Access denied for user
权限不足是最常见的原因,navicat 底层调用的是 mysqldump 命令,但默认用的是你当前连接的账号——而这个账号可能没被授予 lock tables 或 select 全库权限。
实操建议:
- 在 Navicat 连接属性里确认「高级」→「使用系统用户」是否勾选:如果勾了,它会尝试用本地 OS 用户去调
mysqldump,而非数据库用户,大概率失败 - 手动测试权限:用该账号登录 MySQL 后执行
SHOW GRANTS;,重点看有没有GRANT SELECT, LOCK TABLES ON *.*(如果是备份单库,至少要ON `dbname`.*) - 临时修复:用 root 或高权限账号登录 Navicat,再执行备份;长期方案是给业务账号补权限:
GRANT SELECT, LOCK TABLES, SHOW VIEW ON `your_db`.* TO 'user'@'%'; FLUSH PRIVILEGES;
备份时卡住或报 mysqldump: Error: 'Can't create/write to file' (Errcode: 13)
这是操作系统级权限问题,mysqldump 尝试写临时文件(比如导出大表时的排序缓冲)失败,不是数据库权限问题。
常见场景:你在 Windows 上用 Navicat 备份,但 Navicat 安装在 C:\Program Files\,而当前用户没写入权限;或 Linux 下用非 root 用户启动 Navicat,/tmp 目录被 noexec 挂载。
实操建议:
- Windows:右键 Navicat 快捷方式 → 「以管理员身份运行」;或把备份路径设为用户有完全控制权的目录,比如
C:\Users\YourName\Backups\ - Linux/macOS:检查
df -T /tmp是否挂载了noexec;临时改用其他 tmp 目录:export TMPDIR="/home/yourname/tmp" && open navicat - Navicat 内部设置:「工具」→「选项」→「备份」→ 把「临时目录」改成明确可写的路径,别留空
备份文件为空或只含建表语句,没数据
这通常是因为 Navicat 在「备份向导」里误选了「仅结构」,或者勾了「忽略数据」选项——界面太紧凑,容易点错。
更隐蔽的情况是:你用了「快速备份」模式(即直接拷贝物理文件),但目标数据库开启了 innodb_file_per_table=OFF,且 Navicat 没权限读取 ibdata1,就会静默跳过数据。
实操建议:
- 新建备份时,务必在向导第二步确认「备份内容」是「结构和数据」,且下方「忽略数据」复选框未勾选
- 避免用「快速备份」,尤其跨版本迁移或不确定存储引擎配置时;改用「标准备份(SQL)」更可控
- 导出后立刻用文本编辑器打开 .sql 文件,搜
INSERT INTO看是否存在;如果只有CREATE TABLE,说明数据没进去,回退重做
备份耗时极长,中途断开或超时
Navicat 默认通过网络连接调用远程 mysqldump,如果数据库大(>1GB)、网络不稳定、或 MySQL 的 max_allowed_packet 太小,就容易中断并留下不完整文件。
性能影响明显:Navicat 不支持 --compress,也不自动分卷,全靠单次 HTTP/Socket 连接扛住整个 dump 流量。
实操建议:
- 优先在数据库服务器本地装 Navicat(或直接用命令行);若必须远程,先调大 MySQL 配置:
max_allowed_packet = 512M+net_read_timeout = 3600,然后重启 mysqld - 拆库备份:不要「备份所有数据库」,而是逐个选中业务库单独备份,降低单次压力
- 关键提醒:Navicat 的「自动重连」对备份过程无效;一旦断开就得从头来,所以大库务必在稳定网络下操作,别用 WiFi 或共享带宽环境
真正麻烦的不是报错本身,而是 Navicat 把底层 mysqldump 的退出码和 stderr 日志做了封装,错误信息经常被截断。下次遇到奇怪失败,先打开 Navicat 的「日志」→「显示日志窗口」,找以 mysqldump exited with code 开头的那行,后面跟着的真实错误才值得盯紧。

















