0

//更新:当输入 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 服务器的机器与我访问它的机器不同,而这又不是我实际坐的机器。我需要把这些点联系起来,显然不知道如何正确地解决这个问题。

任何提示将不胜感激。

4

1 回答 1

0

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

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

于 2013-10-17T14:25:23.393 回答