【问题标题】:Nodejs - mysql2 stream connection and remote hostNodejs - mysql2 流连接和远程主机
【发布时间】:2017-10-05 13:50:52
【问题描述】:

我需要从一台服务器查询一个 mysql 数据库。 mysql 数据库位于另一个网络上。我只能从特定服务器连接到此网络。

我需要创建一个从服务器 1 到服务器 2 的隧道,并使用此隧道连接到我的 mysql 数据库。

这是我当前的代码。这允许我连接到服务器 2 的本地 mysql 服务器,但不能连接到远程 mysql 服务器。

var Client = require('ssh2').Client,
mysql = require('mysql2'),

var client = new Client();
var ssh = client.connect({
  host: config.server_tunnel.dstHost,
  port: 22,
  username: config.server_tunnel.username,
  privateKey: config.server_tunnel.privateKey
});

ssh.forwardOut('127.0.0.1', 12345, '127.0.0.1', 3306, function (err, stream) {
   mysql.createConnection({
    user: config.database.username,
    password: config.database.password,
    database: config.database.database,
    stream: stream,
    host: 'remote.host.com'
  });
});

【问题讨论】:

    标签: node.js node-mysql2


    【解决方案1】:

    不要将host 传递给mysql.createConnection(),而是尝试让隧道连接到它:

    ssh.forwardOut('127.0.0.1', 12345, 'remote.host.com', 3306, ...);
    

    【讨论】:

    • 完美,现在您已经指出了这一点,这完全有道理。谢谢。
    猜你喜欢
    • 2022-01-13
    • 2017-10-21
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多