gpt4 book ai didi

ruby - 在多个 SSH 隧道上运行 MySQL 查询?

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:09 27 4
gpt4 key购买 nike

我的情况有点类似于“How to create a ssh tunnel in ruby and then connect to mysql server on the remote host”。

我想在我的本地机器上对生产 MySQL 数据库主机运行查询。我的本地机器无法直接连接到数据库主机。但是,如果我通过 SSH 连接到网关机器,我可以运行 MySQL 客户端并连接到数据库主机。

我正在尝试弄清楚如何以编程方式从我的机器运行一个查询,该查询被转发到网关机器,网关机器将它转发到数据库服务器,并返回结果。基本上我想要 LOCAL => GATEWAY => DB_HOST 转发。

我有一个在命令行上运行 ssh.exec 和 MySQL 的 hacky 解决方案,如下所示,但是,我正在尝试找到一种进行两次端口转发的方法。我试过了,但到目前为止还没有成功。

require 'rubygems'  
require 'mysql2'
require 'net/ssh/gateway'

gateway = Net::SSH::Gateway.new(
$gateway_host, $gateway_user,:password => $gateway_pass)

# This works
ssh = gateway.ssh($db_host, $db_login_user)
data = ssh.exec!("mysql -u#{$db_user} -p#{$db_pass} #{$db_name} -e '#{$sql_query}'")
puts "#{data.class} is the class type"
puts data

# Want to do something like this with port forwarding
# client = Mysql2::Client.new(:host => $db_host,
# :username => $db_user,
# :password => $db_pass,
# :database => $db_name,
# :port => port)
# results = client.query($sql_query)

puts "end stuff"
ssh.close

有什么建议吗?

最佳答案

您的图表布局得很好,您需要一条从网关到 Db_Host 的隧道;以及从本地计算机到网关的第二条隧道。这两个隧道将通过网关有效地将您的本地计算机连接到 db_host。

这是一个特定于 tunneling MySQL over SSH 的引用

关于ruby - 在多个 SSH 隧道上运行 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com