如何使用go-sql-driver通过SSH通过标准TCP / IP连接到MySQL?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用go-sql-driver通过SSH通过标准TCP / IP连接到MySQL?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2387字,纯文字阅读大概需要4分钟。
内容图文
![如何使用go-sql-driver通过SSH通过标准TCP / IP连接到MySQL?](/upload/InfoBanner/zyjiaocheng/882/8cd8fe12059a4c79841bbd41c25a0a45.jpg)
我目前正在使用Windows 8.1上的MySQL Workbench通过SSH上的标准TCP / IP访问Linux服务器上的远程MySQL数据库.基本上我有以下信息:
> SSH主机名:dbserver.myorg.com:ssh-port
> SSH用户名:myRemoteLoginUsername
> SSH密码:(存储在Vault中)
> SSH密钥文件:本地.ppk文件的路径
> MySQL主机名:127.0.0.1
> MySQL服务器端口:3306
>用户名:myRemoteDbUsername
>密码:(存储在Vault中)
>默认架构:myRemoteDatabaseName
如何使用github.com/go-sql-driver/mysql从Go命令应用程序连接到数据库?
sql.Open语句中的DataSourceName字符串应如何显示?
db, err := sql.Open("mysql", <DataSourceName> ) {}
准备工作的DataSourceName字符串是否需要做任何额外的工作?
我在Windows PC上安装了腻子.我阅读了有关隧道的知识,并为端口3306(D3306)添加了动态隧道.我希望这可以让我使用到localhost:3306的连接进行连接,并且每当我用腻子连接到远程主机时,都会自动将请求转发到远程数据库,但这也没有按预期进行.
解决方法:
好吧,我认为您可以执行“完整执行”.
SSH部分和端口转发
我会从this开始(我无法用Google搜索一个更好的例子).
请注意此代码的两个问题:
>实际上不正确:它连接到远程套接字
接受客户端连接之前
它应该做相反的事情:接受客户端连接
端口转发的本地套接字,然后使用活动的SSH会话进行连接
到远程套接字,如果成功,则生成两个goroutine进行铲
这两个套接字之间的数据.
>在配置SSH客户端时,它明确允许基于密码的
身份验证原因未知.使用时不需要这个
基于pubkey的身份验证.
可能会绊倒您的障碍是管理对SSH密钥的访问.
这样做的问题是,应该通过密码保护一个好的密钥.
您说密钥的密码“存储在值中”,老实说,我不知道“值”是什么.
在我使用的系统上,SSH客户端要么要求输入密码以解密密钥,要么使用所谓的“ SSH代理”:
>在基于Linux的系统上,通常是OpenSSH的ssh-agent二进制文件在后台运行,可通过Unix域套接字访问它,并通过检查名为SSH_AUTH_SOCK的环境变量来定位它.
>在Windows上,我使用PuTTY,它具有自己的代理pageant.exe.
我不知道PuTTY SSH客户端用来定位它.
要访问OpenSSH代理,golang.org/x/crypto/ssh提供了代理子程序包,该子程序包可用于查找代理并与之通信.
如果您需要从选美中获取密钥,恐怕您需要弄清楚使用和实现哪种协议.
MySQL部分
下一步是将其与go-sql-driver集成.
我将以最简单的方式开始:
> SSH端口转发正常工作后,
使它监听本地主机上随机端口上的传入连接.
打开连接后,从返回的连接中获取端口
宾语.
>使用该端口号来构造连接字符串,以传递给您将创建的使用go-sql-driver的sql.DB实例.
然后,驱动程序将连接到端口转发的端口,而SSH层将完成其余的工作.
完成这项工作后,我将探讨您选择的驱动程序
允许进行更细粒度的调整,例如允许您直接将它传递给io.ReadWriter(打开的套接字)的实例,以便您可以完全跳过端口转发设置,而只产生通过SSH转发的新TCP连接,即跳过“本地收听”步骤.
内容总结
以上是互联网集市为您收集整理的如何使用go-sql-driver通过SSH通过标准TCP / IP连接到MySQL?全部内容,希望文章能够帮你解决如何使用go-sql-driver通过SSH通过标准TCP / IP连接到MySQL?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。