Navicat通过SSH隧道连接数据库,详细步骤

简介: 通过SSH隧道连接数据库的本质是建立一个加密的安全通道。你的Navicat会先通过SSH协议登录到你的远程服务器,然后再通过这个加密的隧道连接服务器上的数据库服务。

通过SSH通道连接数据库是Navicat一项非常实用的功能,它能帮助我们安全地访问远程服务器上的数据库。下面详细介绍操作步骤、要点以及常见问题的解决方法。

基本原理

通过SSH隧道连接数据库的本质是建立一个加密的安全通道。你的Navicat会先通过SSH协议登录到你的远程服务器,然后再通过这个加密的隧道连接服务器上的数据库服务。这样做的好处是无需直接暴露数据库端口到公网,大大增强了安全性,特别适合访问云服务器上的数据库。

准备工作

Navicat软件:确保你已安装适用于你数据库类型的Navicat产品(如MySQL、PostgreSQL等)。

连接信息:

SSH连接信息:远程服务器的IP地址/主机名、SSH端口(通常为22)、服务器操作系统用户名及密码(或SSH私钥文件)。

数据库连接信息:数据库用户名、密码、数据库名(如需)、数据库端口(如MySQL通常为3306,PostgreSQL为5432)。

网络权限:确保你的本地网络允许出站SSH连接(通常端口22),并且远程服务器防火墙已放行SSH端口和数据库端口(如果数据库配置需要)。

详细步骤

打开新建连接窗口:

启动Navicat。

点击左上角的“连接”按钮,选择你需要的数据库类型(例如MySQL、PostgreSQL)。

配置SSH隧道参数:

在弹出窗口中选择 “SSH”选项卡。

勾选 “使用SSH隧道” 。

填写SSH连接信息:

主机:远程服务器的公网IP地址或域名。

端口:SSH端口,默认为22。

用户名:用于登录远程服务器的系统用户名(如root或拥有权限的其他用户)。

认证方法:

密码认证:选择“密码”,并输入服务器用户的密码。

私钥认证(更安全):选择“公钥”,然后点击“…”按钮选择你的私钥文件(如Putty生成的.ppk文件或OpenSSH格式的私钥)。请注意,Navicat for Windows也支持通过Pageant等ssh agent进行认证,具体配置可参考官方文档。

image.png

配置数据库连接参数:

选择 “常规”选项卡。

填写数据库连接信息:

连接名:为此连接设置一个易于识别的名称(如“生产环境MySQL”)。

主机名/IP地址:此处非常重要。因为此时连接已经通过SSH隧道“进入”了远程服务器,所以应填写服务器本地的数据库地址,通常是 localhost 或 127.0.0.1 。(许多初学者误填服务器公网IP会导致连接失败)

端口:数据库的实际监听端口,如MySQL为3306,PostgreSQL为5432。

用户名:数据库用户的用户名(非服务器系统用户名)。

密码:数据库用户的密码(非服务器系统密码)。

如果需要,可在“高级”选项卡中配置其他参数(如字符集)。

测试并保存连接:

点击 “测试连接” 按钮。

image.png

如果所有信息填写正确,应弹出“连接成功”的提示。

点击“确定”保存连接配置。

开始使用:

保存后,该连接会出现在左侧连接列表中。

双击此连接名称即可建立连接并开始管理数据库。

连接参数详解

以下是SSH连接和常规连接中需要填写的关键信息及其说明:

image.png

常见问题与解决方法

“无法连接到目标主机”或SSH认证失败:

原因:SSH连接信息错误、服务器SSH服务未运行、网络防火墙阻止了SSH端口、或私钥格式不正确。

解决:检查服务器IP、SSH端口、用户名和密码/私钥是否正确。确认服务器SSH服务是否正常启动(如通过systemctl status sshd)。检查本地和服务器防火墙/安全组规则是否放行了SSH端口。

“无法连接到数据库”错误:

原因:数据库连接信息错误、数据库服务未运行、或数据库用户权限不足。

解决:

确保常规选项卡中的“主机”字段填写的是localhost或127.0.0.1,而不是服务器的公网IP。

检查数据库用户名和密码是否正确。

登录服务器,确认数据库服务是否正在运行(如systemctl status mysql)。

确认该数据库用户是否允许从本地(localhost)连接,并且具有相应权限。

测试连接成功,但保存后提示“connection is being used”:

原因:有时在已有连接上修改配置可能会遇到此问题。

解决:尝试创建一个全新的连接,而不是在原有连接上修改。

连接缓慢:

原因:网络延迟或SSH隧道加密开销。

解决:确保网络稳定。如果数据库性能要求极高且处于安全内网,可考虑在安全环境下使用直接TCP/IP连接(但通常SSH隧道更安全)。

重要安全提示

强密码与密钥:为服务器账户和数据库账户使用强密码。优先选择SSH密钥对认证而非密码认证,因为它更安全。

最小权限原则:为数据库连接账户授予其所需的最小权限,不要直接使用root或超级用户账户进行日常操作。

保护连接信息:妥善保管你的SSH私钥和数据库密码,不要泄露。

修改默认SSH端口:为提高安全性,可以考虑修改服务器的默认SSH端口(22),并在Navicat中相应修改端口号。但请注意,修改端口号需要相应的服务器配置和防火墙规则调整。

其他连接方式简介

除了SSH隧道方式,Navicat也支持直接TCP/IP连接(在“常规”选项卡中直接填写数据库服务器的公网IP和端口)。这种方式通常需要:

数据库服务监听在公网IP或0.0.0.0上。

服务器防火墙和安全组规则明确放行数据库端口(如3306)。

数据库用户授权允许从你的本地IP地址连接(如’user’@‘your_local_ip’)。

通常情况下,出于安全考虑,更推荐使用SSH隧道方式,因为它提供了加密通道,无需将数据库端口暴露给公网。

image.png

谢谢你看我的文章,既然看到这里了,如果觉得不错,随手点个赞、转发、在看三连吧,感谢感谢。那我们,下次再见。

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

相关文章
|
19天前
|
搜索推荐 关系型数据库 大数据
PL/pgSQL 入门教程(四):使用游标(cursor)
游标是PostgreSQL中“按需取数”的数据指针,避免大查询内存溢出;支持逐行处理、动态查询、精准更新/删除及函数返回大结果集。分未绑定(灵活)与绑定(固定)两类,核心操作为声明→打开→FETCH/MOVE/UPDATE→关闭,FOR循环可自动简化遍历。
|
1月前
|
移动开发 前端开发 Java
微信直连商户公众号 JSAPI 支付,详细教程+源码
JSAPI 支付用于微信公众号内的网页调起微信收银台,常见于在公众号菜单、文章页或 H5 活动页中完成支付。该方式依赖微信内置浏览器环境,非微信浏览器无法调起。
312 1
|
Dubbo 大数据 应用服务中间件
【解决方法】Dubbo报错Data length too large
Data长度超过设置参数的最大值
|
4月前
|
存储 Java Linux
【Docker】(2)还在浏览网页寻找Docker命令?本文全面列举与使用Docker里的各个命令!想要什么命令直接从本文拿!
docker有着比VM更少的抽象层 由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源 因此在CPU、内存利用率上Docker将会在效率上有明显优势 docker利用的时宿主机的内核,而不需要加载操作系统OS内核 当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核 进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程时分钟级别的。 而Docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个Docker容器只需
479 124
|
8月前
|
负载均衡 Java API
基于 Spring Cloud 的微服务架构分析
Spring Cloud 是一个基于 Spring Boot 的微服务框架,提供全套分布式系统解决方案。它整合了 Netflix、Zookeeper 等成熟技术,通过简化配置和开发流程,支持服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)、API网关(Zuul)、配置管理(Config)等功能。此外,Spring Cloud 还兼容 Nacos、Consul、Etcd 等注册中心,满足不同场景需求。其核心组件如 Feign 和 Stream,进一步增强了服务调用与消息处理能力,为开发者提供了一站式微服务开发工具包。
740 0
|
关系型数据库 MySQL
navicat报错1045 - Access denied foruser ‘root‘@‘localhost‘(using password:YES)解决方法
navicat报错1045 - Access denied foruser ‘root‘@‘localhost‘(using password:YES)解决方法
1296 0
|
11月前
|
JSON JavaScript 前端开发
shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)
在使用Openlayers、leaflet、mapbox等地图控件的时候,GeoJSON几乎是不可避免打交道的数据类型,如果您想要从事gis行业相关的开发工作,本篇文章应该能为您带来一些帮助。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 人工智能 开发框架
蚂蚁集团开源项目 DB-GPT 和 VSAG 惊艳亮相,引领 AI 数据革命!
9月5日,在2024 Inclusion·外滩大会“从DATA for AI到AI for DATA”见解论坛上,由蚂蚁集团发起的,旨在提高数据库与大模型应用开发效率的“星辰智能社区”新发布了两个项目:AI原生数据应用开发框架DB-GPT新版本与向量索引库VSAG。
|
SQL 存储 关系型数据库
MySQL新增字段/索引会不会锁表?
MySQL新增字段/索引会不会锁表?
1468 0
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的公司进销存管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的公司进销存管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
295 0