在 Node JS 上通过 SSH 的 MYSQL 隧道不返回任何结果

问题描述

我正在尝试将 MysqL 查询隧道传输到远程服务器。我在 Node.JS 上使用 SSH2 和 MysqL2 包。我尝试改编另一个问题 here 中提到的示例代码。这是我的代码

const MysqL = require('MysqL2');
const { Client } = require('ssh2');
const sshClient = new Client();
require('dotenv').config();

var ssh = new Client();
ssh.on('ready',function() {
  ssh.forwardOut(
    '127.0.0.1',3308,'127.0.0.1',function (err,stream) {
      if (err) throw err;
      const dbServer = {
        host: process.env.DB_HOST,port: process.env.DB_PORT,user: process.env.DB_USER,password: process.env.DB_PASSWORD,database: process.env.DB_DATABASE,ssl: {
            ca: require('fs').readFileSync('./certs/ca.pem'),key: require('fs').readFileSync('./certs/client-key.pem'),cert: require('fs').readFileSync('./certs/client-cert.pem')
        },stream: stream
    }
      var connection = MysqL.createConnection(dbServer);
      connection.query('SELECT * FROM `users` ;',function(err,results,fields) {
          if (err) throw err;
          console.log(results); // results contains rows returned by server
      });
    });
}).connect({
    host: process.env.DB_SSH_HOST,port: process.env.DB_SSH_PORT,username: process.env.DB_SSH_USER,privateKey: require('fs').readFileSync(process.env.DB_SSH_KEY)
  });

代码编译良好但不返回任何结果。当我使用 MysqL 工作台时,我能够使用相同的证书连接到同一台服务器。任何想法我错过了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)