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