2017-10-05 3 views
1

하나의 서버에서 mysql 데이터베이스를 쿼리해야합니다. mysql 데이터베이스는 다른 네트워크에있다. 특정 서버에서이 네트워크에만 연결할 수 있습니다.Nodejs - mysql2 스트림 연결 및 원격 호스트

서버 1에서 서버 2로 터널을 만들고이 터널을 사용하여 mysql 데이터베이스에 연결해야합니다.

이것은 현재 코드입니다. 이렇게하면 서버 2의 로컬 mysql 서버에 연결할 수 있지만 원격 mysql 서버에는 연결할 수 없습니다. 대신 mysql.createConnection()host를 전달

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

, 터널에 연결하고 시도 :

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

완벽한, 즉 지금 당신이 그것을 지적했습니다 총 의미가 있습니다. 고맙습니다. – CharliePrynn