本地使用代理访问云服务器数据库
场景: 项目的测试环境是部署至云服务器上的,有时候云服务器的项目测试出现了一些问题,为了方便复现就在本地直连云服务器的数据库(mysql服务器)。但是云服务器是有三台机子,只有一台可以通过互联网直连,另外两台需要通过跳板机的方式才能连接到,不方便直连测试。
云服务部署图
云服务器的数据库是存放在服务器B(172.xxx.xxx.72)上面,由于服务器B没有暴露外网IP,我们需要先连接跳板机A,进入到A服务器上,通过ssh连接进入到服务器B。市面上常用的数据库连接工具如DbVisualizer或者navicat等工具也已经提供跳板机方式进行连接,一般我们本地是用xshell进行跳板机连接。
实现方式
一、xshell隧道
1、首先我们本地PC需要连接到跳板机A上面
2、第1步的操作只是让我们连接进入到跳板机A上面,还需要使用ssh指令由A服务器连接进入到B服务器。ssh的指令在xshell中也可以有两种方式进行配置到会话中,以下可以二选一进行配置
①提前配置好登录脚本(建议使用)
②指定连接运行的远程命令(需每次输入服务器B的密码,胜在安全)
3、执行完第2步操作之后,需要开启xshell隧道。将服务器B的数据库端口3306代理到本地的3306端口
右键跳板机属性,选中隧道,添加转移规则。转移规则的类型使用“本地(拔出)”类型,源主机即当前主机,目标主机即建立隧道关联的主机(172.xxx.xxx.93),这里的操作是把源主机的端口和目标主机的端口进行绑定,当我们telnet localhost 3306 的时候实际请求会被隧道转发打到目标主机(172.xxx.xxx.93)上的3306端口
4、此时实际已经建立了连接,验证隧道是否成功,可以telnet 本地 3306端口查看是否通了,注意本地的mysql服务器应该关闭或者更换启动端口,防止端口占用。若telnet成功则表示成功配置 了隧道,修改数据库的连接地址为127.0.0.1:3306连接,最终能访问到云服务器的数据库。