当前位置: 首页 > news >正文

使用SSH tunnel访问内网的MySQL

文章目录

  • 环境
  • 背景
  • 方法
  • 参考

注:本文是使用SSH tunnel做端口转发的一个示例。有关SSH端口转发,可参考我的几篇文档

  • https://blog.csdn.net/duke_ding2/article/details/106878081
  • https://blog.csdn.net/duke_ding2/article/details/135627263
  • https://blog.csdn.net/duke_ding2/article/details/107108962

环境

  • Windows 11 专业版
  • CentOS 7.9
  • MySQL 8.0.34

背景

MySQL实例位于内网,其IP地址为 172.17.xxx.xxx ,端口是默认的 3306

jumpserver(CentOS)既有公网地址 8.140.xxx.xxx ,也有内网IP地址,可以从内网连接到MySQL。一般我们就在jumpserver上连接MySQL,但有两个问题:

  1. jumpserver是Linux,只有命令行,因此无法使用图形工具(比如MySQL Workbench)。
  2. 在本地(Windows)开发时,需要连接数据库,方便测试和调试。

网络连通性如下:

Windows ====> jumpserver ====> MySQL(公网)          (内网)

现在的需求是,希望能够从本地Windows端,连接到MySQL实例。

方法

这里需要建立一个反向代理,而使用SSH tunnel是一个简单方便的解决办法。

关于如何使用 ssh 命令建立tunnel,以及正向代理和反向代理的概念,这里不再赘述。

解决办法其实很简单,只需在本地(Windows端)运行如下命令:

ssh -L 3306:172.17.xxx.xxx:3306 jumpserver -N

该命令建立了一个从Windows到jumpserver的正向tunnel(tunnel的方向和ssh的方向是一致的)。具体说来就是:jumpserver(tunnel的服务器端)会把Windows(tunnel的客户端)的 3306 端口的请求转发到 172.17.xxx.xxx3306 端口。

接下来,只需在Windows端,用MySQL client工具(比如MySQL Workbench)连接本地( 127.0.0.1 )的 3306 端口,就能通过SSH tunnel到达jumpserver,并且被jumpserver转发到内网的MySQL实例(即 172.17.xxx.xxx3306 端口)。

MySQL Workbench配置如下:

在这里插入图片描述

接下来就可以愉快的玩耍了。

同理,如果要在本地调试代码(比如Python代码,使用 pymysql 连接数据库),需指定host为 127.0.0.1

import pymysql
from pymysql.cursors import DictCursor
......# 建立数据库连接connection = pymysql.connect(host='127.0.0.1', # 数据库地址user='xxx',  # 用户名password='xxx',   # 密码database='xxx',    # 数据库名charset='utf8mb4',      # 字符编码cursorclass=DictCursor)

参考

  • https://blog.csdn.net/duke_ding2/article/details/106878081
  • https://blog.csdn.net/duke_ding2/article/details/135627263
  • https://blog.csdn.net/duke_ding2/article/details/107108962
http://www.lqws.cn/news/156835.html

相关文章:

  • VSCode主题定制:CSS个性化你的编程世界
  • nginx.conf配置详解:从(413 Request Entity Too Large)说起
  • 《前端面试题:CSS的display属性》
  • 基于SpringBoot和PostGIS的OSM时空路网数据入库实践
  • 六、数据库的安全性
  • 【AI学习】KV-cache和page attention
  • 04-初识css
  • CICD实战(二)-----gitlab的安装与配置
  • 一文读懂 ZFS RAIDZ:深度解析 RAIDZ 类型、模式、配置和应用场景
  • nginx
  • 建筑设备一体化监控系统:提升能效与运维效率
  • 【面经分享】京东
  • OpenResty 安装指南
  • Linux磁盘管理与文件系统
  • 服务器重启后配置丢失怎么办?
  • Docker 与容器技术的未来:从 OCI 标准到 eBPF 的演进
  • es在Linux安装
  • 无人机避障与视觉跟踪技术分析!
  • 代码随想录 算法训练 Day23:回溯算法part02
  • 玩转Docker | 使用Docker部署cashbook记账本
  • 命名管道实现本地通信
  • 知识图谱:为什么说它是AI突破认知瓶颈的最后一块拼图?
  • 云原生 DevOps 实践路线:构建敏捷、高效、可观测的交付体系
  • 口语考试准备part1(西电)
  • 接IT方案编写(PPT/WORD)、业务架构设计、投标任务
  • 视觉前沿算法复现环境配置1——2025CVPR风格迁移网络SaMam
  • 【MATLAB去噪算法】基于CEEMDAN联合小波阈值去噪算法(第四期)
  • Socket编程UDP\TCP
  • 从理论崩塌到新路径:捷克科学院APL Photonics论文重构涡旋光技术边界
  • vue-router路由问题:可以通过$router.push()跳转,但刷新后又变成空白页面