mysqlがインストールされているサーバーに外部から接続してDBを操作する方法

スポンサーリンク
Pocket
LINEで送る

rubyでmysqlがインストールされているサーバーに外部から接続してDBを操作する方法

バッチ用のサーバーからmysqlがインストールされているサーバーにssh接続して操作する必要があり、少しハマってしまいました。

環境

サーバー:Amazon EC2

ruby version: ruby 2.3.0p0

 

必要なgemをインストールします。

gem install mysql2

gem install net-ssh-gateway

 

外部サーバーからsshトンネル経由でmysqlに接続する

require ‘rubygems’
require ‘mysql2’
require ‘net/ssh/gateway’

スポンサーリンク

gateway = Net::SSH::Gateway.new(
  ‘接続したいサーバーホスト’,
  ‘username’,
  port: 22,
  keys: [‘鍵’]
)
gateway.open(‘127.0.0.1’, 3306) do |local_port|
    client = Mysql2::Client.new(
    :host => ‘127.0.0.1’,
    :user => ‘username’,
    :password => ‘password’,
    :port => local_port,
    :database => “dbname”
  )
  client.query(‘SHOW TABLES;’).each do |row|
    p row
  end
end

 

これでssh接続してmysqlにアクセスできます。

最初はmysqlのportを3306にしてたんですが、接続できず。local_portを使わないといけないみたいです。