Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le tunnel Node.js ssh2 reste actif et exécute les requêtes mysql

Dans le cas d'une utilisation directe du pilote de base de données, si vous utilisez mysql2 au lieu de mysql , vous pouvez en fait transmettre le flux transféré ssh comme connexion sous-jacente à utiliser par le pilote de base de données. Cela vous permettra d'éviter d'avoir à créer un serveur supplémentaire qui écoute les connexions entrantes à tunneliser. Vous pouvez donc faire quelque chose comme ceci à la place :

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