【发布时间】:2016-10-23 08:20:46
【问题描述】:
这是我的问题,我想通过 ruby 脚本访问我们的数据库,我可以使用 ssh 隧道通过 PSequal 连接到数据库。当我尝试从 ruby 连接到数据库时,它总是返回我超时错误。
错误消息是这样的:“无法连接到服务器:操作超时 服务器是否在主机“HOSTNAME”(IP 地址)上运行并接受 端口 5432 上的 TCP/IP 连接"
我尝试在终端中使用“psql -h -d -U”登录,但得到了相同的答案。谢谢
def connectDb
begin
file = File.open("pem file")
gateway = Net::SSH::Gateway.new('hostname', 'username', keys_only: true, port: 22, key_data: file)
port_pg = gateway.open('hostname', 5432)
puts port_pg
con = PG::Connection.open('hostname', portpg, "", "", 'dbname', 'username', 'password')
rescue PG::Error => e
puts e.message
end
end
【问题讨论】:
-
请不要在图片中添加代码。这使回答您的问题变得更加困难。相反,请将代码以文本形式放入您的帖子中,以便回答者可以轻松看到。
-
您是否有理由希望通过 SSH 连接而不是仅使用数据库驱动程序直接连接到数据库?
-
为什么不直接创建一个适当的 database.yml 条目并在您的模型中使用该连接?
-
@CacheStaheli 感谢您的提醒。我会在以后的帖子中这样做。
-
@JustinWood 我正在使用 pg 驱动程序连接到数据库,但它总是返回我超时错误。我尝试了像 Postico 这样的 pg 客户端版本,它在连接之前需要 ssh 信息,这让我觉得我可能需要 ssh 才能连接到数据库