Nodejs - потоковое соединение mysql2 и удаленный хост

Мне нужно запросить базу данных MySQL с одного сервера. База данных mysql находится в другой сети. Я могу подключиться к этой сети только с определенного сервера.

Мне нужно создать туннель с сервера 1 на сервер 2 и использовать этот туннель для подключения к моей базе данных MySQL.

Это мой текущий код. Это позволяет мне подключаться к локальному серверу mysql сервера 2, но не к удаленному серверу 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 ответ

Решение

Вместо прохождения host в mysql.createConnection()попробуйте подключить туннель к нему:

ssh.forwardOut('127.0.0.1', 12345, 'remote.host.com', 3306, ...);
Другие вопросы по тегам