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, ...);