通过SSH隧道安全连接远程MySQL数据库端口的操作方法

 更新时间:2026年05月20日 09:07:48   作者:茶猫云呀  
这篇文章给大家介绍通过SSH隧道安全连接远程MySQL数据库端口的操作方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧

最稳妥的做法是通过 SSH 隧道将远程数据库端口映射到本地,避免直接把 MySQL 端口暴露在公网上,适合运维管理或远程开发场景。

先说结论:SSH 隧道能加密传输流量并利用 SSH 认证机制,比直接开放 3306 端口更安全。

  • 适合:需要远程管理数据库但不想开放数据库端口的场景
  • 先准备:确保拥有远程服务器的 SSH 登录权限和密钥
  • 验收:本地客户端能成功连接映射后的本地端口且数据查询正常

命令速用版

在本地终端执行以下命令,将远程服务器的 3306 端口映射到本地的 3307 端口:

ssh -L 3307:127.0.0.1:3306 -N -f user@remote_host

其中 user 是远程服务器登录用户,remote_host 是服务器 IP 或域名。完成后,本地连接 127.0.0.1:3307 即等同于连接远程数据库。

为什么会这样

MySQL 默认通信协议在未配置 SSL 的情况下是明文的,直接暴露 3306 端口容易受到中间人攻击或暴力破解。SSH 隧道利用已有的 SSH 加密通道转发数据,既不需要额外配置数据库 SSL 证书,又能复用服务器的 SSH 防火墙策略,实现网络层面的隔离。

分步处理

第一步:确认 SSH 连通性先确保本地能通过 SSH 登录远程服务器,建议使用密钥认证而非密码,减少被爆破风险。如果尚未配置密钥,可使用 ssh-keygen 生成并通过 ssh-copy-id 上传。

第二步:建立隧道执行上述速用版命令。参数 -N 表示不执行远程命令,-f 表示后台运行。如果需要保持连接活跃,可在 SSH 配置中开启 ServerAliveInterval

第三步:配置数据库客户端在 Navicat、DBeaver 或命令行中,主机填 127.0.0.1,端口填 3307,用户名和密码填写数据库本身的凭证,而非 SSH 凭证。

怎么验证是否生效

在本地终端使用 MySQL 客户端尝试连接:

mysql -h 127.0.0.1 -P 3307 -u db_user -p

连接成功后,执行 SELECT 1; 确认数据交互正常。同时可以在远程服务器上执行 SHOW PROCESSLIST;,能看到来自 localhost 的连接请求,说明隧道转发正确。

常见坑

1. 数据库用户权限限制MySQL 用户表中的 host 字段必须允许来自 SSH 服务器本地的连接。通常设置为 localhost 或 127.0.0.1 即可,因为对数据库而言,连接确实来自服务器本机。如果设置为特定 IP,可能会拒绝连接。

2. 隧道断开导致连接失效SSH 会话超时会导致隧道关闭。建议在 SSH 配置文件 ~/.ssh/config 中增加保活设置,或使用 autossh 工具自动维护隧道连接。

3. 本地端口被占用如果本地 3307 端口已被占用,命令会执行失败。可更换为其他高位端口,如 33070,并在客户端相应修改配置。

到此这篇关于通过SSH隧道安全连接远程MySQL数据库端口的操作方法的文章就介绍到这了,更多相关ssh隧道安全连接远程mysql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中联合主键的操作方式

    MySQL中联合主键的操作方式

    MySQL联合主键操作包括创建、新增和修改,创建时在表定义中使用PRIMARY KEY关键字指定多个字段,新增和修改时,分别使用ALTER TABLE语句删除旧主键并添加新主键
    2024-12-12
  • mysql如何查询某一时间段内没有卖出的商品

    mysql如何查询某一时间段内没有卖出的商品

    室友拿来一道关于mysql查询的问题,利用mysql查询某一时间段内没有卖出的商品,需要的朋友可以参考下
    2014-02-02
  • Mysql中key和index的区别点整理

    Mysql中key和index的区别点整理

    在本篇文章里小编给大家整理的是关于Mysql中key和index的区别点整理,需要的朋友们可以学习下。
    2020-03-03
  • MySQL单表恢复的步骤

    MySQL单表恢复的步骤

    这篇文章主要介绍了MySQL单表恢复的步骤,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • mysql导入sql文件报错 ERROR 2013 2006 2002

    mysql导入sql文件报错 ERROR 2013 2006 2002

    今天在做项目的时候遇到个问题,就是往mysql里导入sql文件的时候总是报ERROR 2013 2006 2002,研究了一番才找到解决办法,这里记录下来分享给大家
    2014-11-11
  • mysql 8.0.12 安装图文教程

    mysql 8.0.12 安装图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.12 安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • MySql 5.6.14 Win32位免安装解压缩版配置教程

    MySql 5.6.14 Win32位免安装解压缩版配置教程

    本文给大家介绍mysql 5.6.14 win32 位免安装解压缩版配置方法,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,对mysql5.6.14 免安装解压缩版配置方法感兴趣的朋友一起看看吧
    2016-11-11
  • MySQL实现分词搜索(FULLTEXT)的方法

    MySQL实现分词搜索(FULLTEXT)的方法

    这篇文章主要介绍了MySQL实现分词搜索(FULLTEXT)的方法,包括全文搜索的简单使用,建表添加FULLTEXT索引使用该技术非常简单,首先需要有一张表,我建立了一张图书表并插入了两条数据,需要的朋友可以参考下
    2022-10-10
  • Mysql行锁和表锁的实现示例

    Mysql行锁和表锁的实现示例

    行锁和表锁是两种常见的锁定机制,本文主要介绍了Mysql行锁和表锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • 关于MySQL Memory存储引擎的相关知识

    关于MySQL Memory存储引擎的相关知识

    这篇文章主要介绍了关于MySQL Memory存储引擎的相关知识,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11

最新评论