2017-10-05 59 views
1

我需要從一臺服務器查詢mysql數據庫。 mysql數據庫位於另一個網絡上。我只能從特定服務器連接到此網絡。Nodejs - mysql2流連接和遠程主機

我需要創建一個從服務器1到服務器2的隧道,並使用此隧道連接到我的mysql數據庫。

這是我現在的代碼。這允許我連接到服務器2的本地mysql服務器,但不能連接到遠程mysql服務器。

var Client = require('ssh2').Client, 
mysql = require('mysql2'), 

var client = new Client(); 
var ssh = client.connect({ 
    host: config.server_tunnel.dstHost, 
    port: 22, 
    username: config.server_tunnel.username, 
    privateKey: config.server_tunnel.privateKey 
}); 

ssh.forwardOut('127.0.0.1', 12345, '127.0.0.1', 3306, function (err, stream) { 
    mysql.createConnection({ 
    user: config.database.username, 
    password: config.database.password, 
    database: config.database.database, 
    stream: stream, 
    host: 'remote.host.com' 
    }); 
}); 

回答

1

不是傳遞hostmysql.createConnection(),儘量使得隧道連接到它:

ssh.forwardOut('127.0.0.1', 12345, 'remote.host.com', 3306, ...); 
+0

完美,這使得總感覺現在你已經指出了這一點。謝謝。 – CharliePrynn

相關問題