gpt4 book ai didi

mysql - Ruby:如何通过 SSH 隧道返回 MySQL 查询?

转载 作者:行者123 更新时间:2023-11-30 01:11:42 24 4
gpt4 key购买 nike

//更新:当输入 mysql 密码时,-ppassword 起作用。 -p 密码不起作用。问题解决了。//

我们的工作服务器上有数百个数据库,我想编写一个 ruby​​ 脚本来自动执行在本地计算机上创建这些数据库的重复版本的过程,以用于开发目的。

我一直在尝试使用 net-ssh 来创建隧道,但是(主机、用户、通行证等由于明显的原因而被审查):

require 'net/ssh'

HOST = 'xxx'
USER = 'yyy'
PASS = 'ppp'

Net::SSH.start( HOST, USER, :password => PASS ) do|ssh|
puts "inside ssh tunnel"
puts ssh.exec!('ruby -v')
puts ssh.exec!('mysql -u zzz -p pswrd -h c3 will_il_raw -e "select * from deeds limit 1"')
end

输出结果:

inside ssh tunnel
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]

随后无限期挂起。有趣的是,如果我通过控制台 ssh 进入同一台计算机,“ruby -v”将返回 1.9.3。如果我在那里输入 mysql 查询,它会成功返回指定表的一行。

我认为该解决方案与端口转发有关,但在这里我有限的知识开始让我完全失望。

运行 mysql 服务器的机器与我访问它的机器不是同一台机器,而这也不是我实际坐在的机器。我需要将这些点连接起来,但显然不知道如何正确地进行此操作。

任何专业提示将不胜感激。

最佳答案

在 MySQL 语法中,当使用 -p[password] 提供密码时,-p 和密码之间没有空格。

由于脚本的语法版本有空格,查询结果是提示要求输入密码,这导致 SSH 隧道远端挂起。

关于mysql - Ruby:如何通过 SSH 隧道返回 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19420796/

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