MySQL 只允许服务器本机访问,在 Mac 上直接填写服务器 IP 和 3306,连接不通。想查询里面的数据,并不一定要把数据库端口开放到外网。
如果你能通过 SSH 登录这台服务器,可以用 DartShell 的本地端口转发建立通道,再让数据库连接指向 Mac 本机的端口。
下面以 MySQL 和 SSH 运行在同一台服务器为例:MySQL 监听服务器的 127.0.0.1:3306,Mac 使用 13306 作为访问入口。数据库示例为 demo_shop,查询账号为 demo_reader,请替换成自己的实际配置。
先分清这三个端口
用途
本例配置
在哪里填写
SSH 服务端口
使用已有 SSH 连接中的配置
SSH 服务器条目
Mac 本机入口
13306
转发规则、数据库连接
服务器 MySQL 端口
3306
转发规则的远程端口
SSH 端口不是数据库端口。 先确保 SSH 连接本身可用;服务器上的 MySQL 已运行;数据库账号也有读取目标库表的权限。13306 只是本例选择的空闲端口,不要求和远端的 3306 一样。
1. 建立本地转发,选好 SSH 服务器
在 DartShell 左侧进入「端口转发」,点击「添加规则」,给规则取名,例如「MySQL SSH 隧道」。
转发类型选择 「本地」,本机端口填写 13306,再选择能登录目标服务器的 SSH 配置。
本机端口填写 13306,并选择用于建立隧道的 SSH 服务器
本机端口是 Mac 上的访问入口;SSH 服务器选择自己的实际连接。
2. 填写服务器上的 MySQL 地址,保存并启动
继续向下查看转发设置,填写:
- • 远程主机:
127.0.0.1 - • 远程端口:
3306
远程主机填写 127.0.0.1,远程端口填写 3306
这里的 127.0.0.1 指 SSH 服务器自身,因为本例的 MySQL 就运行在这台服务器上。
点击「保存」,回到规则列表并启动这条转发。确认规则处于运行状态,再配置数据库连接。
MySQL SSH 隧道规则已运行,右侧显示停止按钮
规则运行后,本机入口 13306 才能通过 SSH 到达服务器的 MySQL 端口。
3. 数据库连接填 Mac 本机地址
进入 DartShell 左侧的「数据库」,新建 MySQL 连接,填写数据库名称和账号信息。
- • 连接名称: 远程 MySQL
- • 主机地址:
127.0.0.1 - • 端口:
13306 - • 用户名:
demo_reader - • 密码: 该 MySQL 账号的密码
- • 数据库:
demo_shop
这里填写的是 Mac 本机的 127.0.0.1:13306,不是服务器 IP,也不是远端 MySQL 的 3306。用户名和密码使用 MySQL 账号,与 SSH 登录账号分别对应。
MySQL 连接使用本机 127.0.0.1 和 13306,SSH 隧道开关关闭,使用 SSL 开启
本例先在「端口转发」中建立通道,因此数据库连接里的「SSH 隧道」保持关闭;「使用 SSL」按当前 MySQL 环境配置,本例保持开启。
看到「SSH 隧道」关闭,不代表连接没有经过 SSH。这条通道已经由前面启动的转发规则提供,不需要在数据库连接中重复建立。 MySQL 的 SSL 设置仍要单独检查,不能把 SSH 转发成功等同于数据库认证和加密设置一定正确。
填写完成后,可以点击「测试连接」,确认通过再保存;本例最终通过打开表读取数据来验证访问结果。
4. 打开表,验证数据确实能读到
连接数据库,展开 demo_shop → Tables → orders,打开表格。本例读取到 3 行演示订单,包含商品名、金额和状态。
远程 MySQL 的 orders 表返回三行数据
能读取实际表数据,说明数据库连接已通过本地入口到达远端服务,并完成账号认证和读取。图中的记录是隔离环境里的演示数据。
此时的访问路径是:
Mac 上的数据库连接 → 本机
127.0.0.1:13306→ SSH 隧道 → 服务器127.0.0.1:3306
本例的 MySQL 始终只监听服务器的回环地址,未改成对外监听;从客户端直接访问服务器 IP 的 3306 不可用,通过隧道则成功读到了表数据。
连接不通,沿这条路径排查
先看隧道是否运行。 仅保存规则还不够,确认已启动,并检查 SSH 服务器是否能够正常连接。
再核对两端地址。 转发规则的远程端口是服务器的 3306;数据库连接的端口是 Mac 的 13306。虽然两处都写 127.0.0.1,前者指服务器,后者指 Mac。若更换本机端口,数据库连接里的端口也要一起更新。
最后检查数据库这一层。 隧道建立后,MySQL 的账号、密码、目标库权限和 SSL 配置仍须有效。若提示认证或加密错误,应检查这些设置,而不是反复改转发端口。
使用结束后停止转发规则,后续通过它建立的数据库连接就无法继续访问远端服务。需要再次使用时,先启动规则,再连接数据库即可。