sql >> Base de Datos >  >> RDS >> Mysql

El túnel Node.js ssh2 se mantiene vivo y ejecuta consultas mysql

En el caso de usar el controlador de la base de datos directamente, si usa mysql2 en lugar de mysql , en realidad puede pasar el flujo reenviado ssh como la conexión subyacente que utilizará el controlador de la base de datos. Esto le permitirá evitar tener que crear un servidor adicional que escuche las conexiones entrantes que se canalizarán. Así que puedes hacer algo como esto en su lugar:

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