我已按如下方式设置我的 mongod.conf,因此它只允许本地主机连接。
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 127.0.0.1
然后我希望我的站点通过 ssh 连接到 mongodb,因此必须将端口转换为本地主机。
但是我怎样才能将它与 mongoose 的连接功能集成呢?
mongoose.connect(configDB.url, function(err){
if (err){
console.log('Error connecting to mongodb: ' + err)
}
});
我找到了以下命令,但我不确定这是否是我需要的:
ssh -L 4321:localhost:27017 -i ~/.ssh/ssh_key user@ip-adress
这应该通过端口 4321 将我 SSH 到本地主机,对吗?所以我想我在 nodejs mongoose 的连接函数中需要这样的东西。我试图在 mongodb 安全教程上阅读此内容,但我根本无法将他们的说明链接到 nodejs。谁有这方面的经验?
最佳答案
你快到了。设置独立于 Node 的隧道:
ssh -Nf -p [db_server_ssh_port] [mongo_user]@[mongo_domain] -L \
[local_db_port]:localhost:[remote_db_port]
然后在 Node 内,使用 [local_db_port] 连接到 mongo:
mongoose.connect(
"mongodb://localhost:[local_db_port]/[db_name]",
{"pass":"[db_pwd]"}
)
发送到 Web 服务器上 [local_db_port] 的所有流量都将通过隧道发送到 [mongo_domain] 上的端口 [remote_db_port]。以下帖子提供了更多信息。它连接的是MySQL数据库,但原理是一样的。
关于node.js - 如何通过 mongoose 和 ssh 隧道连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36031435/