2017-10-05 129 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

相关问题