通过 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 服务器?