游乐游手机版
首页/数据库/文章详情

Navicat通过SSH配置定时备份教程与操作方法

时间:2026-08-23 20:59
Na vicat 通过 SSH 隧道连接数据库时,必须手动显式开启相关选项,否则 Na vicat 会默认直接连接数据库端口,进而触发 Connection refused 错误。正确做法是勾选“使用SSH隧道”,并准确填写 SSH 参数;数据库主机建议填写 127 0 0 1,本地密钥路径必须使用

Na vicat 通过 SSH 隧道连接数据库时,必须手动显式开启相关选项,否则 Na vicat 会默认直接连接数据库端口,进而触发 Connection refused 错误。正确做法是勾选“使用SSH隧道”,并准确填写 SSH 参数;数据库主机建议填写 127.0.0.1,本地密钥路径必须使用绝对路径,导出保存路径也仅支持客户端本地目录。对于自动定时备份任务,还需要额外检查 SSH 连通性,并处理好密钥在无用户会话环境下的认证上下文问题。

如何配置Na vicat通过SSH执行定时备份

Na vicat 通过 SSH 连接远程数据库时,备份任务必须显式启用 SSH 隧道

Na vicat 默认不会自动通过 SSH 转发连接数据库。即便你已经填写了 SSH 参数,如果在连接设置中没有勾选「使用 SSH 隧道」,程序依然会直接访问数据库端口(例如 3306)。而远程数据库端口通常会被防火墙拦截,或仅允许本地监听,因此常见结果就是脚本卡住、连接超时,或者出现 Connection refused 报错。

实操要点:

  • 打开 Na vicat 中对应连接的「编辑连接」→「SSH」页签,务必勾选「使用 SSH 隧道」
  • SSH 主机、端口、用户名必须填写正确;密钥文件路径要使用绝对路径(如 /Users/you/.ssh/id_rsa),不能写成 ~
  • 数据库主机名建议填写 127.0.0.1 或 localhost(因为 SSH 隧道会把数据库请求转发到本地端口)
  • 测试连接成功后再保存——如果只保存不测试,导出的备份脚本仍可能因为 SSH 参数未真正生效而执行失败

导出的 .bat/.sh 脚本无法自动走 SSH,需手动验证隧道是否就绪

Na vicat 导出的脚本(例如 backup_ssh.bat)本质上只是调用 na vicat.exe,并传入 --connection="xxx" 这类参数。它不会主动检查 SSH 服务是否可用,也不会在连接异常时自动重试。一旦 SSH 中断,比如服务器重启、网络波动或隧道失效,脚本通常会静默失败,日志中往往只显示 Failed to connect to database,却没有更明确的故障原因。

建议在脚本开头加一层 SSH 可达性校验(以 Linux/macOS 为例):

ssh -o ConnectTimeout=5 -o BatchMode=yes user@ssh-host exit > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "SSH unreachable at $(date)" >> /var/log/na vicat-backup.log
exit 1
fi

Windows 环境下可以使用 ping + telnet 做基础连通性判断,但更稳定、更适合自动化检测的方式,是使用 plink(PuTTY 工具集)进行轻量级 SSH 探测。

定时任务执行时 SSH 认证失败,本质是缺少用户会话上下文

你在图形界面里点击“测试连接”可以成功,并不代表计划任务也一定能正常运行。无论是 Windows 任务计划程序,还是 Linux 的 cron,默认都是在无图形会话、无 keychain 环境下执行的。如果 SSH 密钥依赖系统钥匙串(如 macOS Keychain)或 Pageant(Windows PuTTY agent),那么定时备份执行时就很容易出现认证失败。

解决路径只有两条:

  • 用密码认证 + sshpass(Linux/macOS):脚本中改用 sshpass -p 'xxx' ssh ...,但需确保 sshpass 已安装且密码不暴露在进程列表里(加 -e 从环境变量读)
  • 用免密密钥 + 绝对路径 + 无密码保护:生成密钥时不设 passphrase,chmod 600 私钥文件,并在脚本中指定 -i /full/path/to/id_rsa

注意:Na vicat 本身不会管理 SSH 密钥的生命周期,它只是把你在 GUI 中填写的路径原样写入脚本参数。只要路径错误、文件权限过宽,或者密钥失效、过期,都会直接导致定时备份任务执行失败。

备份路径和时间戳变量在 SSH 场景下仍受限于客户端本地文件系统

很多用户会误以为“通过 SSH 备份数据库”就等于“把备份文件保存到远程服务器”,实际上并不是这样。Na vicat 的所有备份操作,即使通过 SSH 连接数据库,最终生成的 SQL 文件仍然会写入运行 Na vicat 的那台客户端机器本地磁盘。也就是说,导出路径如 C:backups$(DATE).sql 或 /home/user/backups/$(DATE).sql,始终都是本地路径,而不是远程路径。

如果你确实需要把备份保存到远程服务器,必须额外增加一步文件传输操作:

  • 先完成本地备份(Na vicat 脚本)
  • 再用 scp 或 rsync 把生成的 SQL 文件推送到远程主机,例如:
    scp "/home/user/backups/mydb_$(date +%Y%m%d_%H%M%S).sql" user@remote:/backup/mysql/
  • 最后加 find /home/user/backups -name "mydb_*.sql" -mtime +7 -delete 清理本地旧文件

$(DATE) 是 Na vicat 唯一支持的时间变量,格式固定为 YYYYMMDD_HHMMSS,无法自定义修改;如果路径中包含空格或中文字符,往往会直接导致脚本退出,而且既不报错也不写日志——这是实际使用中最容易被忽略的静默故障点之一。

来源:https://www.php.cn/faq/3025776.html
上一篇phpMyAdmin启动时如何禁止自动连接默认服务器设置方法 下一篇Navicat功能分支中如何高效管理数据库变更
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Redis是什么:核心特性、架构与应用场景解析
数据库 · 2026-09-01

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

Windows 安装 MongoDB 完整图文教程
数据库 · 2026-09-01

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动
数据库 · 2026-09-01

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

MacOS安装MongoDB完整教程
数据库 · 2026-09-01

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

Ubuntu系统安装与配置Redis完整指南
数据库 · 2026-09-01

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。