Nodejs - mysql2 流连接和远程主机
Nodejs - mysql2 stream connection and remote host
我需要从一台服务器查询 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'
});
});
不要将 host
传递给 mysql.createConnection()
,而是尝试让隧道连接到它:
ssh.forwardOut('127.0.0.1', 12345, 'remote.host.com', 3306, ...);
我需要从一台服务器查询 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'
});
});
不要将 host
传递给 mysql.createConnection()
,而是尝试让隧道连接到它:
ssh.forwardOut('127.0.0.1', 12345, 'remote.host.com', 3306, ...);