0

我正在尝试将 mysql 查询隧道传输到远程服务器。我在 Node.JS 上使用 SSH2 和 MYSQL2 包。我尝试调整此处另一个问题中提到的示例代码。这是我的代码

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', 3308,
    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 工作台时,我可以使用相同的证书连接到同一台服务器。任何想法我错过了什么?

4

0 回答 0