#!/usr/bin/env ruby
require 'rubygems'
require 'mysql'
require 'net/ssh/gateway'
require 'sequel'
HOST = '54.222.195.145'
SSH_USER = 'admin'
DB_HOST = "stage-mysql-27.cdendvrkytps.rds.cn-north-1.amazonaws.com.cn"
gateway = Net::SSH::Gateway.new(HOST, SSH_USER, :keys => [
"~/.ssh/infra_stage-id_rsa" ],)
port = gateway.open(DB_HOST,3306,3306)
child = fork do
db = Sequel.connect(:adapter => 'mysql', :host => '127.0.0.1',:port =>
port, :user => 'root', :password => 'tMq2OhtrF3afh1FL', :database =>
'wechat_db')
puts db['select id from lead'].count
end
puts "child: #{child}"
Process.wait
gateway.close(port)
I can set up a connection with mysql using the code above , and print the
number of `lead` table records.
when i use the following code directly
db = Sequel.connect(:adapter => 'mysql', :host => '127.0.0.1',:port =>
port, :user => 'root', :password => 'tMq2OhtrF3afh1FL', :database =>
'wechat_db')
puts db['select id from lead'].count
the program is hanging up.
is there a way to connect remote mysql using sequel via ssh without fork a
child process, because i want to retrieve `db` object, so i can continue to
do it using this object,
but now the fork block only seems to return a `child` process number.
i can realise the same feature with mysql2, but the api for sequel seems to
be more elegant. i want to use sequel gem.
require 'rubygems'
require 'mysql2'
require 'net/ssh/gateway'
ssh_gate = Net::SSH::Gateway.new(
'54.222.195.145',
'admin',
:keys => [ "~/.ssh/infra_stage-id_rsa" ],
)
puts 'true' if ssh_gate.active?
ssh_gate.open('stage-mysql-27.cdendvrkytps.rds.cn-north-1.amazonaws.com.cn',
3306, 3306)
client = Mysql2::Client.new(
host: "127.0.0.1",
username: 'root',
password: 'tMq2OhtrF3afh1FL',
database: 'wechat_db',
port: 3306
)
results = client.query("SELECT * FROM lead")
results.each do |row|
p row
end
client.close
Thanks
Tim
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.