[英]initiating sequelizer mysql connection via tunnel-ssh module
我想使用Sequelizer连接到MySQL数据库。 现在,我收到一个“连接被拒绝”错误。
要访问数据库,我必须使用SSH进行登录。据Mick Hansen所述: https : //github.com/sequelize/sequelize/issues/3753 ,使用SSH进行登录的一种方法是使用tunnel-ssh建立隧道,然后启动Sequelizer。
到目前为止,我的方法(未成功)是启动隧道,然后在隧道打开时测试Sequelizer是否已通过身份验证。
更新资料
谢谢您的帮助!
码:
// sequelize config
var sequelize = new Sequelize('database', 'user', 'pass', {
host: '127.0.0.1',
dialect: 'mysql',
port: 3306,
pool: {
max: 10,
min: 0,
idle: 20000
}
});
// tunnel config
var config = {
user:'user',
host:'sshHost',
port:22,
dstHost:'127.0.0.1',
dstPort:3306,
srcHost:'127.0.0.1',
srcPort:3306,
localHost:'127.0.0.1',
localPort: 3306,
privateKey:require('fs').readFileSync('/path/to/key')
};
var tunnel = require('tunnel-ssh');
// initiate tunnel
tunnel(config, function (error, server) {
//....
if(error) {
console.error(error);
} else {
console.log('server:', server);
// test sequelize connection
sequelize
.authenticate()
.then(function(err) {
console.log('Connection established');
})
.catch(function(err) {
console.error('unable to establish connection', err);
})
}
})
当我的配置设置为上述对象时,出现“所有配置方法失败错误” 。
如果将配置更改为以下内容, 则会出现“ Sequelize Error Connection Refused”错误。
// tunnel config
var config = {
user:'user',
host:'sshHost',
port:22,
dstHost:'127.0.0.1',
dstPort:3306,
//srcHost:'127.0.0.1',
//srcPort:3306,
//localHost:'127.0.0.1',
//localPort: 3306,
privateKey:require('fs').readFileSync('/path/to/key')
};
localPort
是在本地系统上侦听的端口。 当前,您已将其定义为27000,但将Sequelize配置设置为3306。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.