无法连接到 MongoDB Atlas (queryTxt ETIMEOUT)

Ino*_*ani 0 mongodb express mongodb-atlas

我无法通过驱动程序、mongoshell 或 MongoDB 指南针连接到 MongoDB Atlas。获取错误:queryTxt ETIMEOUT

Error:  { Error: queryTxt ETIMEOUT clustermasjeed1-ekpfe.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (dns.js:197:19)
  errno: 'ETIMEOUT',
  code: 'ETIMEOUT',
  syscall: 'queryTxt',
  hostname: 'clustermasjeed1-ekpfe.mongodb.net' }
Run Code Online (Sandbox Code Playgroud)

我遵循了 mongodb atlas (mongodb.cloud) 关于如何连接的指南:

const MongoClient = require(‘mongodb’).MongoClient;
const uri = "mongodb+srv://<username>:<password>@clustermasjeed1-ekpfe.mongodb.net/test?retryWrites=true";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // perform actions on the collection object
  client.close();
});
Run Code Online (Sandbox Code Playgroud)

用真实字符串值替换用户名和密码。我有强烈的感觉,原因是 +srv 部分。之前使用mlab的时候,连接只有mongodb://(没有+srv)

Ino*_*ani 5

通过联系 MongoDB 支持解决了该问题。字符串 URI 应更改为:

mongodb://<username>:<password>@clustermasjeed1-shard-00-00-ekpfe.mongodb.net:27017,clustermasjeed1-shard-00-01-ekpfe.mongodb.net:27017,clustermasjeed1-shard-00-02-ekpfe.mongodb.net:27017/test?ssl=true&replicaSet=ClusterMasjeed1-shard-0&authSource=admin&retryWrites=true
Run Code Online (Sandbox Code Playgroud)

这些是您可以在集群的指标选项卡上看到的所有主机名(主要和次要)


小智 5

欣赏 David Buck 和 Abhay kumar:

此问题与网络连接有关。Wi-Fi 或其他有线连接没有获得完整的权限来传输或连接您的系统与 MongoDB 网络。解决方案:Mongodb 中的 IP 白名单,您需要在以太网 - IP V4 下的系统公共 DNS 中添加 8.8.8.8。