关于SSH连接MySQL数据库的配置原理疑问
关于SSH连接MySQL的工作原理,给你掰扯明白
完全理解你的困惑!很多刚接触这种连接方式的新手都会有这个疑问,咱们一步步把它说清楚:
先区分两种MySQL连接方式
- 直接连接:这种场景下,你的本地机器能直接访问MySQL服务器的3306端口(默认),所以只需要填MySQL的IP、端口、账号密码就行。但绝大多数生产环境里,为了安全,MySQL的3306端口是不对外网开放的,只允许服务器本地或者内部网络访问,这时候直接连接就行不通了。
- SSH隧道连接:这时候你其实是借助一台中间跳板服务器(就是你填的SSH服务器IP对应的机器)来间接访问MySQL。你的本地机器不需要能直接连MySQL的3306端口,只要能连跳板服务器的22端口(SSH默认端口)就行。
为什么要填SSH服务器的信息?
当你在GUI工具里填入SSH服务器IP、用户名和密码时,工具会帮你做这几件事:
- 先在你的本地机器和SSH跳板服务器之间建立一条加密的SSH隧道,相当于开了一条只有你们俩能看懂的“秘密通道”。
- 把你要发给MySQL的所有请求,通过这条隧道转发到跳板服务器上。
- 跳板服务器因为能直接访问MySQL(比如它和MySQL在同一个内网,或者就是MySQL所在的服务器本身),会替你把请求发给MySQL,再把结果通过隧道传回到你的本地GUI里。
针对你的疑问:如果能直接SSH连MySQL服务器,为啥还要这么搞?
如果你直接SSH登录的就是MySQL所在的那台服务器,确实可以在SSH命令行里敲mysql -u 用户名 -p来连接,但GUI工具的这种SSH连接方式,是把「SSH登录服务器+在服务器上操作MySQL」这两步合并成了可视化操作——你不用手动在SSH里敲命令,工具自动帮你完成隧道转发,让你在本地GUI里直接操作远程的MySQL,用起来更顺手。
另外还有个额外的好处:哪怕你能直接连MySQL的端口,用SSH隧道连接也更安全,因为所有数据都是通过SSH加密传输的,避免明文的MySQL数据被网络截获。
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

