1. 概述

本文介绍了如何使用SSH隧道连接MySQL,网络隔离导致无法直接访问数据库的问题. 第2节对需求进行了简单的描述;第3节介绍了linux环境下,如何通过SSH隧道连接MySQL;第4节介绍了windows环境下,如何通过SSH隧道连接MySQL.

2. 需求描述

图1 需求示意图

图1描述了用户的具体需求,即用户在localhost这台机器上,数据库实例在B这台机器上,由于网络隔离的原因,用户无法直接访问B这台机器.但是,用户可用SSH到A这台机器,而A这台机器是可以访问B这台机器上的数据库实例的.因此,可以考虑将A作为跳板机,使用SSH隧道技术,以便用户在localhost上可以直接访问B这台机器上的数据库.

额外说明:接下来将以图1中的IP和端口为例,演示linux环境下和windows环境下用户通过SSH隧道访问MySQL的具体方法,在图1中,用户可以通过SSH登录到A这台机器,A的IP为106.2.32.177,A的SSH端口是1046,数据库实例所在的机器IP为10.164.172.204,数据库的端口为3306,假设现在存在一个数据库用户为test,密码为123456.

3. linux环境

假设localhost是一台linux,则可以在该机器上执行如下命令,建立一个SSH隧道:

ssh -fCPN –L 3307:10.164.172.204:3306 -p1046 rds-user@106.2.32.177

说明如下:执行上面的shell语句,会在本地打开一个ssh的守护进程,该进程会监听本地的3307端口,这个端口为隧道的入口,当访问本地的3307端口时,数据包会通过ssh进程,经由106.2.32.177(A)发送到最终的10.164.172.204(B)的3306端口,以此达到localhost机器直接访问B上的数据库实例的目的.

# 参数解释

# -C 使用压缩功能,是可选的,加快速度.

# -P 用一个非特权端口进行出去的连接.

# -f 一旦SSH完成认证并建立port forwarding,则转入后台运行.

# -N 不执行远程命令.该参数在只打开转发端口时很有用(V2版本SSH支持)

执行成功以后,可以通过如下命令查看SSH进程:

也可以通过如下命令查看打开的端口号:

设置完成以后,直接访问本地的3307端口,就可以登录远程的MySQL了,如下所示:

可以看到,只需要一条命令,就能够实现通过SSH隧道连接MySQL.只要保证localhost能够通过SSH登录A机器,A机器能够访问B机器上的MySQL实例,设置几乎没有任何困难.

4. windows环境

windows下通过SSH隧道连接MySQL与linux几乎一样,首先设置SSH隧道,然后连接本地的端口,下面以XShell与Navicat为例,说明如何在windows下实现通过SSH隧道的方式访问MySQL.

第一步,设置ssh连接,这与普通的SSH连接一模一样.

第二步,设置SSH隧道,如下所示:

第三步,设置完成以后,点击确定,并且使用SSH登录到A机器,以便打开SSH隧道.

第四步,打开Navicat,建立一个新的连接,连接的地址为localhost或127.0.0.1,连接的端口为3307(在本例中),如下所示:

点击Test Connection,将看到连接成功的提示,经过以上简单的几步,我们就实现了,访问localhost的本地端口,但是实际却连接的是我们原本无法访问的机器B上的数据库实例.

centos mysql ssh连接,使用SSH隧道连接MYSQL相关推荐

  1. python mysql ssh隧道_在python中使用ssh隧道连接mysql

    通常为了保证数据库安全,不会允许直接连接数据库,而是需要通过SSH隧道去连接服务器背后的数据库: 今天我在用Python连接远程的MySQL时,直连遇到了无法连接的情况,使用了SSH隧道之后解决了问题 ...

  2. mysql ssh错误_通过SSH隧道连接时,MySQL访问被拒绝错误

    几个月来,我一直通过SSH隧道连接到我们本地测试服务器上运行的 MySQL实例,没有任何问题.突然之间,没有我能想到的任何变化,服务器已经开始拒绝来自Sequel Pro的登录尝试,但错误: Unab ...

  3. 用ssh反向连接访问内网主机 ( 实例使用autossh隧道实现mysql的同步 )

    一.准备知识 什么是autossh? 假设有两台主机: A主机为外网,B主机为内网 通常来说外网主机A是无法直接连接到内网主机B的,这时如果要实现A主机通过ssh控制B主机,通常来说有 两种方法: 1 ...

  4. 利用SSH隧道连接远程MySQL数据库

    文章目录 一.前言 二.MySQL服务端 三.MySQL客户端 1.通过navicat工具利用SSH隧道连接MySQL数据库 2.手动建立端口转发规则(以linux为例) 3.使用jsch进行端口转发 ...

  5. 数据库只能内网连接,但是需要远程连接怎么办?通过SSH隧道链接mysql

    数据库只能内网连接,但是需要远程连接怎么办?通过SSH隧道链接mysql 公司新项目上线,需要将项目部署到云端,买了运营商的云主机和云数据库.但是有个问题,云数据库只能内网连接,无法在公司直接连接数据 ...

  6. 通过navicat工具利用SSH隧道连接MySQL数据库

    前言:因为那台服务器信息比较重要,希望通信被加密,所以不适合直接将3306端口开放到公网.被加密了,而实际情况,可能通过公网访问数据库的需求,可考虑利用SSH隧道连接远程MySQL数据库. 如下连接不 ...

  7. mysql ssh隧道连接内网mysql

    通过SSH隧道连接MySQL数据库 一.背景 问题所在:MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,数据安全如果只靠MySQL应用层面显然是不够的,虽然说MySQL实现的 ...

  8. 通过SSH隧道连接远程MySQL-rds服务

    场景: 现有一台MySQL-rds服务,地址:lws.rds.com:3306,用户名:lws,密码:123456,数据库:user. 现要在本地连接该服务,对数据进行处理,然而本地ip无法访问远程数 ...

  9. Ubuntu remmina高级用法-使用ssh隧道连接xrdp

    Ubuntu remmina高级用法-使用ssh隧道连接xrdp 1.remmina 安装 2.使用ssh隧道连接xrdp 2.1remmina版本说明 2.2 ssh设置 2.3 xrdp设置 3. ...

最新文章

  1. 论坛报名 | 人工智能与疫情精准防控
  2. libevent 获取多线程结构体变量加锁方法
  3. 【事故反演】事故反演问题排查
  4. oracle 动态sql列转行_oracle行转列(动态行转不定列)
  5. 【Matlab 图像】bwlabel() 连通域及图像分割
  6. Python自建collections模块
  7. [导入]ServerVariables集合
  8. 人生没有后悔药,云主机可以有“时光机”
  9. springBoot的学习整理 摘抄蚂蚁课堂
  10. JS网页恶搞代码,不断弹出、关不掉的对话框
  11. 一次Rpc调用报错排查
  12. Supervisor进程管理详解
  13. word在任意页开始添加页码
  14. 「直播回放」跳槽、涨薪、社招、校招、职业规划
  15. Java IO流详解和常用流的使用
  16. vue keys detected: '1111'. This may cause an update error.
  17. 可以储存照片的字段类型是_在数据库中可用来存储图片的字段对象是哪种类型的字段?...
  18. TIM定时器_CNT_ARR_PSC_CRR
  19. springboot毕设项目基于的人才招聘系统6czpy(java+VUE+Mybatis+Maven+Mysql)
  20. 基于Vue源码中e2e测试实践

热门文章

  1. readFile读取文件
  2. 深入解析AAVE智能合约:计算和利率
  3. 43.【Java 实现验证码获取 C++实现密码加密和删除和QQ登入系统】
  4. H.迷宫,(算法选修)
  5. 计算机软件发展的指标,信息化发展指数
  6. BuildDownload maven-metadata.xml...打包一直卡在这里
  7. scrapy爬取豆瓣所有电影信息(新手入门超详细版)
  8. Kettle — 集群使用
  9. 智能化软件开发沙龙优秀学者报告·第1期PPT分享(张天翼 普渡大学)
  10. 关于电脑黑屏后st-link下载不了的问题 Error: Flash Download failed - Target DLL has been cancelled