Navicat 无原生命令行工具,所谓“命令行备份”实为导出含连接参数的.bat或.sh脚本,依赖系统调度器(如Windows任务计划、macOS launchd、Linux cron)调用GUI程序执行;推荐直接使用mysqldump等原生命令行工具实现稳定自动备份。
Navicat 本身没有命令行界面
navicat 是图形化客户端,不提供独立的命令行工具(如 navicat-cli 或类似可执行文件)。你无法像调用 mysqldump 那样在终端里直接运行 navicat 的备份命令。所谓“navicat 命令行备份”,实际是利用它生成的自动运行任务 + windows/linux 系统级调度来间接触发。
真正能执行备份的是 Navicat 的计划任务(Windows 下为 .bat,macOS/Linux 下为 shell 脚本)
Navicat 在导出「自动运行任务」时,会生成一个封装了连接参数和操作逻辑的本地脚本:
- Windows:导出为
xxx.bat,本质是调用 Navicat 安装目录下的navicat.exe并传入特定参数(如--backup、--connection) - macOS/Linux:导出为
xxx.sh,调用Navicat可执行文件(路径通常为/Applications/Navicat Premium.app/Contents/MacOS/Navicat或~/Applications/Navicat Premium.app/...) - 该脚本依赖 Navicat 已安装且授权有效;若未登录或试用期过期,运行时会弹窗失败,且无明确错误码返回
- 脚本中硬编码了连接名(不是数据库名)、备份路径、时间戳格式等,修改需手动编辑,不能通过参数动态覆盖
让备份真正“自动”的关键是系统调度器,不是 Navicat
你需要把 Navicat 导出的脚本交给操作系统定时执行:
- Windows:用任务计划程序(Task Scheduler)新建基本任务,触发器设为每天/每周,操作设为“启动程序”,程序填
cmd.exe,参数填/c "D:\backup\run_backup.bat"(注意路径含空格时加英文双引号) - macOS:用
launchd(推荐),创建plist文件放入~/Library/LaunchAgents/,ProgramArguments指向你的xxx.sh,并确保脚本有chmod +x - Linux:用
cron,例如0 2 * * * /home/user/navicat-backup/run_backup.sh >> /var/log/navicat-backup.log 2>&1 - 注意 GUI 权限问题:Windows 任务计划默认以“仅当用户登录时”运行才能调用 GUI 应用(Navicat 本质是 GUI 程序);macOS 的
launchd若设为系统级,可能因沙盒权限无法访问 GUI session,必须放在用户级且LimitLoadToSessionType设为Aqua
更可靠的选择:绕过 Navicat,直接用原生命令行工具
如果你只是需要自动备份,强烈建议跳过 Navicat 的封装层,改用数据库自带工具:
- MySQL:直接写
mysqldump脚本,配合cron或Task Scheduler,稳定、无 GUI 依赖、日志清晰、支持压缩和增量 - PostgreSQL:用
pg_dump+gzip,同样可精确控制参数(如--exclude-table-data) - SQL Server:用
sqlcmd调用 T-SQLBACKUP DATABASE,或 PowerShell 脚本 - Navicat 的封装脚本一旦连接名重命名、密码变更或配置文件损坏,就会静默失败——而
mysqldump报错直接输出到 stderr,容易捕获和告警
复杂点在于 Navicat 的自动任务脚本不是“黑盒可执行”,而是依赖完整 GUI 环境和当前用户会话状态;哪怕它看起来像命令行,底层仍是启动一个图形程序去点菜单——这点很容易被忽略。











