В случай на директно използване на драйвера на базата данни, ако използвате mysql2
вместо mysql
, всъщност можете да предадете ssh препратения поток като основна връзка, която да се използва от драйвера на базата данни. Това ще ви позволи да пропуснете да създавате допълнителен сървър, който слуша за тунелиране на входящи връзки. Така че вместо това можете да направите нещо подобно:
var mysql = require('mysql2');
var Client = require('ssh2').Client;
var ssh = new Client();
ssh.on('ready', function() {
ssh.forwardOut(
'127.0.0.1',
12345,
'127.0.0.1',
3306,
function (err, stream) {
if (err) throw err;
var sql = mysql.createConnection({
user: 'foo',
database: 'test',
stream: stream // <--- this is the important part
});
// use sql connection as usual
});
}).connect({
// ssh connection config ...
});