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

本地通过隧道连接服务器的mysql

前言

服务器上部署了 mysql,本地希望能访问该 mysql,但是又不希望 mysql 直接暴露在公网上

那么可以通过隧道连接 ssh 端口的方式进行连接

从外网看,服务器只开放了一个 ssh 端口,并没有开放 3306 监听端口

设置本地免密登录

这个之前写过,有不清楚的可以看 这里

设置好之后,本地就不需要密码,直接 ssh root@xx.xx.xx.xx 登录到服务器了

建立隧道

本地使用以下命令,来通过 ssh 建立本地到服务器的一个连接通道,将本地的 33060 映射到服务器的 3306 端口

连接本地的 33060 端口,就相当于连接了服务器的 3306 端口

如果需要更详细的输出日志,可以增加 ssh 的参数 -v-vv-vvv,v 越多日志越详细

ssh -N -v -L 33060:127.0.0.1:3306 user@your_server_ip

建议不需要带 v 参数,都是 ssh 的日志,也没什么看的,不带 v 是没有日志输出的

但是因为 ssh 隧道极其不稳定,可以用 autossh 替代,使用上基本一致,增加 M 参数监控端口,会进行断开自动重连

autossh -M 5000 -N -v -L 33060:127.0.0.1:3306 user@your_server_ip

本地连接数据库

在上面隧道建立起来之后,运行 dbeaver,配置连接本地的 33060 端口

输入数据库的账号密码,点击测试连接显示已连接

最终配置

开始没留意,后来发现其实 dbeaver 中就已经实现了 ssh 的隧道功能,这样就不需要单独额外启动 ssh 隧道了

dbeaver 配置分两步,一是设置 ssh 的配置,一是设置 mysql 的配置

前提是本地的公钥已经配置到服务器的 authorized_keys 文件中了,也可以通过输入密码账号的方式连接 ssh

新建连接,在 “SSH” 的标签页上,认证方式使用公钥,并选择本地的私钥,配置好服务器地址以及端口信息

切换回到 “主要” 标签页,主机填 localhost,端口就是服务器的 3306 端口,输入账号密码,测试连接 OK


http://www.kler.cn/a/549128.html

相关文章:

  • 面试题整理:操作系统
  • 洛谷 P2894 USACO08FEB Hotel 题解
  • FFmpeg源码:url_find_protocol函数分析
  • Python Cookbook-1.13 访问子字符串
  • unity学习41:动画里的曲线curve参数 和 事件 events
  • ElementUI 的组件 Switch(开关)如何让文字显示在按钮上
  • Rust编程语言入门教程(一)安装Rust
  • 【云安全】云原生- K8S Kubelet 未授权访问
  • HTTP 与 HTTPS:协议详解与对比
  • Qt5开发入门指南:从零开始掌握跨平台开发
  • 图论(四):图的中心性——度中心性介数中心性紧密中心性
  • Redis 03章——10大数据类型概述
  • Flutter Gradle 命令式插件正式移除,你迁移旧版 Gradle 配置了吗?
  • 基于deepseek api和openweather 天气API实现Function Calling技术讲解
  • Kafka日志数据深度解析:从基础查看到高级操作全攻略
  • Testin云测(兼容性测试)
  • WeMos D1+PIR+Android 的小场景制作
  • Ubuntu 22.04 Desktop企业级基础配置操作指南
  • 「软件设计模式」适配器模式(Adapter)
  • 前端面试手写--虚拟列表