【发布时间】:2020-03-13 22:26:59
【问题描述】:
我有一个带有 node/express 网络服务器的盒子和运行 mongo 的盒子。我试图让他们通过专用网络而不是 0.0.0.0 进行连接。他们可以在自己的私有 IP 上相互 ping 通。我的/etc/mongod.conf 有:
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,10.xxx.xxx.xxx
当我 ssh 到我的网络服务器框时,我可以成功连接到数据库,所以我相信我的 mongo 配置和防火墙设置正确。从命令行我正在使用它(并在提示时输入密码):
mongo mongodb://[myUser]@[10.xxx.xxx.xxx]:27017/[myDbName]?authSource=admin
在我的快递服务器中,我是这样连接的:
const mongoUrl = `mongodb://${process.env.MONGO_HOST}:${process.env.MONGO_PORT}/${process.env.MONGO_DBNAME}?authSource=admin`;
let opts = {
useNewUrlParser: true
};
if (process.env.MONGO_PASS) {
Object.assign(opts, {
auth: {
user: process.env.MONGO_USER,
password: process.env.MONGO_PASS
},
});
}
logger.info("Attempting to connect to db:", { mongoUrl });
mongoose.connect(mongoUrl, opts, handleConnectionErr);
当我在提供与其他命令相同的变量值的网络服务器上运行此命令时,我收到此错误:
error: Error connecting to database: MongoNetworkError: failed to connect to server [10.xxx.xxx.xxx:27017] on first connect [MongoNetworkError: connect EHOSTUNREACH 10.xxx.xxx.xxx:27017]
我错过了什么?
编辑:
- 我的 mongo 服务器的
/var/logs/mongodb/mongod.log上没有任何日志记录 在连接请求期间 - 我已经尝试了
mongoose.connect的其他组合,仅使用 url、仅选项对象或两者的组合。没有改善 - 我实际上在第三台服务器上有另一个节点应用程序连接到同一个数据库,并且使用 nodejs mongodb 成功地这样做了 司机 - 所以我怀疑这与我的盒子有关 向上,或与猫鼬一起
【问题讨论】:
-
尝试将“authSource”从url移动到选项mongodb.github.io/node-mongodb-native/3.5/api/…db端的mongod日志有什么有趣的吗?
-
@AlexBlex 跟踪了 mongo 日志,因为我在每个公共 IP 和私有 IP 之间进行了 d/c 和 r/c。我看到公共 ip 连接一切正常,但私人 ip 尝试的日志完全为空。我尝试了
mongoose.connect的一些组合,包括将所有内容(inc authSource)作为参数传递,并传递完整的 url 字符串。每个结果相同
标签: mongodb networking mongoose