如何启用对 mongoDB atlas 的访问(防火墙问题)?

如何启用对 mongoDB atlas 的访问(防火墙问题)?

我正在跟进全栈课程,但我无法连接到我的 mongoDB Atlas 数据库。

从一开始我就有一个白名单条目,允许按照教程从任何地方进行访问,并且我确定我的用户名在 url 中是可以的(它是数据库访问,等等),所以我不认为这是问题所在。

我尝试了下面的代码(node,使用 mongoose),但没有成功。我尝试了官方的 mongoDB node.js 库,也没有成功(同样出现连接超时)。我甚至安装了 MongoCompass,但出现连接超时。

我做了一些研究,似乎问题在于我的防火墙阻止了对 27017 的访问,正如建议的那样这里,我尝试了http://portquiz.net:27017/一开始它根本不起作用(页面从未加载)。我暂时禁用了我的 ufw 来尝试,现在它有点起作用了:页面在开始时加载,但它一直在“加载”(即使我可以看到内容),过了一会儿它就消失了。

我想知道我是否应该按照建议授予它访问 iptables 的权限这里我的应用程序的 IP 地址,我在这里很困惑。所以我的问题是如何做到这一点?

const mongoose = require('mongoose')


const url =  "/* here i put my url with the appropiate username, password, database name, etc.*/"

mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false, useCreateIndex: true })

const noteSchema = new mongoose.Schema({
  content: String,
  date: Date,
  important: Boolean
})

const Note = mongoose.model('Note', noteSchema)

const note = new Note({
  content: 'HTML is Easy',
  date: new Date(),
  important: true
})

note.save().then(result => {
  console.log('note saved!')
  mongoose.connection.close()
})

这是我运行该文件时出现的错误:

/home/julia/test-rep/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:184
          callback(new MongooseError(message));
                   ^

MongooseError: Operation `notes.insertOne()` buffering timed out after 10000ms
    at Timeout.<anonymous> (/home/julia/test-rep/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:184:20)
    at listOnTimeout (node:internal/timers:556:17)
    at processTimers (node:internal/timers:499:7)

我在使用 MongoClient 时遇到此错误:

MongoServerSelectionError: connection timed out
    at Timeout._onTimeout (/home/julia/node_modules/mongodb/lib/core/sdam/topology.js:438:30)
    at listOnTimeout (node:internal/timers:556:17)
    at processTimers (node:internal/timers:499:7)

以及更详细地介绍时出现的这个错误:

MongoServerSelectionError: connection timed out
    at Timeout._onTimeout (/home/julia/node_modules/mongodb/lib/core/sdam/topology.js:438:30)
    at listOnTimeout (node:internal/timers:556:17)
    at processTimers (node:internal/timers:499:7) {
  reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    setName: 'atlas-z3fex8-shard-0',
    maxSetVersion: null,
    maxElectionId: null,
    servers: Map(3) {
      '/*name of my*/cluster-shard-00-00.9a0bz.mongodb.net:27017' => [ServerDescription],
      '/*name of my*/cluster-shard-00-02.9a0bz.mongodb.net:27017' => [ServerDescription],
      '/*name of my*/cluster-shard-00-01.9a0bz.mongodb.net:27017' => [ServerDescription]
    },
    stale: false,
    compatible: true,
    compatibilityError: null,
    logicalSessionTimeoutMinutes: 30,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    commonWireVersion: 8
  }
}

我将非常感激您的帮助!

相关内容