首页 > 解决方案 > 无法使用 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] 

我错过了什么?

编辑:

标签: mongodbnetworkingmongoose

解决方案


答案是:确保每次使用时都正确复制和粘贴 IP 地址

我在我的一个配置中输入错误


推荐阅读