mongodb - 无法使用 mongoose 连接到 mongo 但可以在命令行上连接?
问题描述
我有一个带有 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]
我错过了什么?
编辑:
/var/logs/mongodb/mongod.log
在连接请求期间,我的 mongo 服务器根本没有任何记录- 我尝试过
mongoose.connect
仅使用 url、仅使用选项对象或两者组合的其他组合。没提升 - 我实际上在第三台服务器上有另一个节点应用程序,它连接到同一个数据库,并且使用 nodejs mongodb 驱动程序成功地这样做了 - 所以我怀疑这与我的盒子设置有关,或者与猫鼬有关
解决方案
答案是:确保每次使用时都正确复制和粘贴 IP 地址
我在我的一个配置中输入错误
推荐阅读
- node.js - 在 ReactJS 中如何在单击提交按钮时将数据存储为 JSON?
- reactjs - 如何在同一个 React 组件中使用函数?
- python - Docker 中的 Python Discord 机器人
- php - 上传到服务器后,图像路径从 vuejs 项目中的 localhost 调用
- c# - 如何使用 linq 执行此操作?
- python - 知道如何解决这个“值错误”.python 3.9.1
- docker - 如何在 Docker 中正确创建映像
- arrays - smartmatch 运算符未按预期工作
- python - 秒表应用程序延迟和递归
- amazon-eks - 使用 eksctl 创建 aws EKS Kubernetes 集群时出错