如何本地开发环境直连测试环境数据库
写在前面
千万不要使用此技巧连接生产环境,不然结果会很刺激!!
如果非要这么用,千万记得做好权限控制!!
如果出了问题,请忘掉这篇文章的作者!!
最近经常有连接各个服务器的数据库去调试的需求,又不愿直接登录到对应的服务器改代码,只好研究一些曲线救国的新方法。
事情的经过是这样的,公司的数据库部署在内网,没有开放外网环境,这对于多机器开发的我来说及其蛋疼,如果要保证随时能连数据库,就必须走哪都背着一台10斤重的电脑放飞自我。如果不愿背电脑,就要在我所有的开发环境上啃掉40G的硬盘来导一份数据。
这让我非常难受,于是有一天,在下班路上突然醍醐灌顶,既然数据库客户端都有提供通过SSH隧道连接数据库的方式为什么我不能通过开一条SSH隧道进到公司的开放服务器然后将内网的端口映射出来。
于是经过一番搜索后终于解决了这个问题,下面是正文。
其实过程及其简单,一行命令让世界臣服
ssh -NCPf root@192.168.99.52 -L 3388:192.168.99.52:3306
这条命令的作用是这样的:
-C 使用压缩功能,是可选的,加快速度。
-P 用一个非特权端口进行出去的连接。
-f 一旦SSH完成认证并建立port forwarding,则转入后台运行。
-N 不执行远程命令。该参数在只打开转发端口时很有用(V2版本SSH支持)
比如说你有一个mysql数据库工作在 192.168.99.52
这台机器上,但端口并不向外网开放,这条命令的作用是使用 root
用户登陆到 192.168.99.52
,然后将这台机器的3306端口forward到你 本机 的3388
端口上,然后你就可以愉快的在本地使用localhost
的 3388
端口连接到远程服务器上数据库了。
这里要注意 -L 后面跟的是目标机器的内网端口,-p 可以指定SSH登陆的端口,-i 指定登陆所需的密钥,完整命令是这样的
ssh -NCPf 用户@可以SSH到的远程机器URL -L 本机端口:127.0.0.1:远程机器需要映射的端口 -p port -i xxxx/id_rsa
此法可用于一些特殊场景下的调试:
- 需要依赖生产环境数据的调试,比如验证报表准确性,验证数据是否正确等
- 使用一台公网机器作为跳板访问内网服务
等等
但千万要注意安全!!!切记切记!!!
最后
good good debug, day day up, 感谢您能看到这里,happy coding~
本作品采用《CC 协议》,转载必须注明作者和本文链接
令人窒息的操作?
@wangroute ?
令人窒息
大佬 怎么取消啊
如果有跳板机怎么办?