Mysql
 sql >> Database >  >> RDS >> Mysql

Il tunnel ssh2 di Node.js si mantiene vivo ed esegue query mysql

Nel caso di utilizzo diretto del driver del database, se utilizzi mysql2 invece di mysql , puoi effettivamente passare il flusso ssh inoltrato come connessione sottostante che deve essere utilizzata dal driver del database. Ciò ti consentirà di evitare di dover creare un server aggiuntivo che sia in ascolto per il tunneling delle connessioni in entrata. Quindi puoi invece fare qualcosa del genere:

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