Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Node.js ssh2-Tunnel am Leben erhalten und MySQL-Abfragen ausführen

Bei direkter Verwendung des Datenbanktreibers, wenn Sie mysql2 verwenden statt mysql , können Sie den ssh-weitergeleiteten Stream tatsächlich als zugrunde liegende Verbindung übergeben, die vom Datenbanktreiber verwendet werden soll. Dadurch können Sie die Erstellung eines zusätzlichen Servers überspringen, der darauf wartet, dass eingehende Verbindungen getunnelt werden. Sie können stattdessen so etwas tun:

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