Mysql Node.js通过ssh连接

Mysql Node.js通过ssh连接,mysql,node.js,ssh,Mysql,Node.js,Ssh,我有一个node.js服务器,可以正常工作,但需要设置ssh连接: var mysql = require('mysql') var io = require('socket.io').listen(3000) var db = mysql.createConnection({ host: 'hostname', user: 'username', password: '12345', database: '12345', port: 3306,

我有一个node.js服务器,可以正常工作,但需要设置ssh连接:

var mysql = require('mysql')
var io = require('socket.io').listen(3000)
var db = mysql.createConnection({

    host: 'hostname',
    user: 'username',
    password: '12345',
    database: '12345',
    port: 3306,
    socket: '/var/run/mysqld/mysqld.sock' 
})

db.connect(function(err){
    if (err) console.log(err)
})

我知道有ssh-npm库用于此目的,但是可用的选项(ssh2、node-sshclient等)似乎可以处理非常复杂的特性,这些特性可能会使事情变得过于复杂。我正在寻找通过ssh连接mysql数据库的最简单方法。实现这一点的最佳方法是什么?

如果您正在运行linux/unix系统,请执行以下操作:

通过ssh连接到mysql服务器,并通过ssh隧道代理mysql端口(默认为3306)

这项工作如下:

1输入
screen
(启动屏幕会话,即使外壳关闭,该会话也是永久性的)

2在屏幕外壳中键入:

ssh -L 3306:127.0.0.1:3306 your_servers_domain_or_ip -lyour_login_name
3输入ssh密码/或使用PKI身份验证以避免手动步骤

4完成。。。现在可以像将MySQL安装在与应用程序相同的机器上一样连接MySQL了

从node.js连接到MySQL,如下所示:

var db = mysql.createConnection({
    host: '127.0.0.1', // Important to connect to localhost after connecting via ssh in screen
    user: 'username',
    password: '12345',
    database: '12345',
    port: 3306
});

您想通过ssh连接到数据库吗?是的,这正是我试图实现的。我使用mac终端,键入“屏幕”,输入您提供的信息以及我的域和密码,并通过ssh成功连接到我的服务器。但是,当我运行server.js节点文件时,问题仍然存在。我收到:{[Error:connect-ECONNREFUSED]代码:'ECONNREFUSED',errno:'ECONNREFUSED',syscall:'connect',fatal:true}这里有我错过的步骤吗?我能够在不需要ssh的服务器上使用此代码成功查询。通过ssh连接后,需要将node.ja应用程序连接到localhost。因为通过屏幕上的ssh命令,您可以在本地服务器上使用mysql服务器的3306端口machine@Bernhardwindows的功能是什么?我正在使用putty连接到我的服务器,并且在本地有一个node.js应用程序,我希望使用ssh连接到数据库。@aidonsnous如果您正在使用,我想它会工作的。不过,或许也可以尝试通过cygwin运行您的节点应用程序。我的许多同事在windows上使用它来创建类似linux的环境。希望有帮助。@4thpyramid如果您事先使用
sceen
命令,即使您关闭终端,会话也会持续。或者,当您的目标服务器支持PKI身份验证时,您可以在系统启动时设置连接,例如,请参见此处