通过 ssh 连接 mysql

Posted

技术标签:

【中文标题】通过 ssh 连接 mysql【英文标题】:Connect mysql via ssh 【发布时间】:2021-11-01 15:02:50 【问题描述】:

如何在 mysql 中通过 c++ 中的 ssh 创建连接?

它应该像这样工作:

mysql -L -u <local database username> -h <database server ip address> -p

无论如何,我想从不在同一网络中的计算机创建到 mysql 数据库的连接,从而交换数据。

我只是不明白我应该如何从mysql_real_connect(); 获取值。

还有其他方法可以吗?

【问题讨论】:

要么在后台生成带有-L 标志的ssh 的副本来转发端口,要么使用libssh2 来做同样的事情。你更喜欢哪一个? libssh2 有一个简单的 tcp/ip 转发示例:github.com/libssh2/libssh2/blob/master/example/tcpip-forward.c @Botje 我试试 libssh2 连接 这对我来说有点太难了。我看不懂代码 @Botje 如何复制 ssh?我应该在哪里做呢? 【参考方案1】:

这是一个使用 boost::process 的简单实现:

bp::child c(bp::search_path("ssh"), "-N", "-L", "23306:localhost:3306", "user@hostname);

您可以在c 处于活动状态时连接到 localhost:23306。

【讨论】:

c 是连接,对吧?我还应该在服务器上设置一些东西吗?例如绑定ip地址 c 是一个 SSH 连接,它保持打开端口转发。服务器应该正在监听 localhost:3306(通过 tcp)。 mysql可以使用SSH连接吗? 您通过SSH隧道连接自动使用它:localhost上的端口23306连接到SSH服务器主机上的端口3306。 我可以使用mysql_init()mysql_stmt_bind_param() 之类的命令吗?

以上是关于通过 ssh 连接 mysql的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 通过 SSH 隧道连接 - 如何指定其他 MySQL 服务器?

怎么通过SSH连接Mysql数据库

通过 SSH 隧道的 MySQL 连接

EXCEL的VBA通过SSH连接MYSQL

Windows平台使用Navicat for MySQL通过SSH密钥认证连接远程MySQL数据库

通过ssh管道连接内网数据库(mysql)