MongoDB atlas 连接失败并出现错误 MongoServerSelectionError: connection <monitor> to 52.64.0.234:27017 c

Posted

技术标签:

【中文标题】MongoDB atlas 连接失败并出现错误 MongoServerSelectionError: connection <monitor> to 52.64.0.234:27017 closed【英文标题】:MongoDB atlas connection fails with error MongoServerSelectionError: connection <monitor> to 52.64.0.234:27017 closed 【发布时间】:2020-10-02 04:35:46 【问题描述】:

我已经建立了一个 mongodb Atlas 免费层集群。当我尝试使用 node js 连接到它时,它会引发错误。我已经手动和选择当前将我的 IP 列入白名单。我也尝试将 +srv 添加到我的连接网址,但这只会导致更多错误。

这是我尝试连接的节点 js 代码

const  MongoClient  = require("mongodb");                                                                                                                                       

const url = "mongodb://user1:password1!@cluster0-shard-00-00-bc7dh.mongodb.net/test?retryWrites=true&w=majority&useNewUrlParser=true&useUnifiedTopology=true";

const client = new MongoClient(url);

async function run() 
    try 
        await client.connect();
        console.log("Connected correctly to server");

     catch (err) 
        console.log(err.stack);
    
    finally 
        await client.close();
    


run().catch(console.dir);

这是我得到的错误

MongoServerSelectionError:与 52.64.0.234:27017 的连接已关闭 在 Timeout._onTimeout (C:\Users\YOUNG\node_modules\mongodb\lib\core\sdam\topology.js:430:30) 在 listOnTimeout (internal/timers.js:549:17) 在 processTimers (internal/timers.js:492:7)

有类似问题的人可以通过将他们的 IP 地址列入白名单来解决它,但它对我不起作用。可能是什么问题?

我尝试允许所有 ip 访问,但错误仍然存​​在,当我将 uri 与 +srv 一起使用时,我收到以下错误

MongoServerSelectionError: Authentication failed.
at Timeout._onTimeout (C:\Users\YOUNG\node_modules\mongodb\lib\core\sdam\topology.js:430:30)
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)

【问题讨论】:

以防万一尝试允许所有带有通配符IP的IP:0.0.0.0 你试过mongodb+srv://协议了吗? 我已经尝试了上述两个建议,但仍然出现上述相同的错误 【参考方案1】:

这是因为您的 IP 地址未列入白名单。 转到项目中 mongodb 地图集中的 network accessADD IP ADDRESS 。仅测试从任何地方添加访问权限选项 你回去再用连接字符串再试一次。

【讨论】:

【参考方案2】:

在 MongoDB 中的集群中访问您的网络访问

【讨论】:

【参考方案3】:

您在连接字符串中缺少tls=true URI 选项。

您还应该使用 Atlas 默认提供的 SRV URI,它会处理这个问题。

【讨论】:

当我使用 srv uri 时,我得到一个 ENOTFOUND 错误,当我添加 tls=true 选项时,我得到一个身份验证错误。 如果您遇到错误,请随时更新您的问题。对于身份验证错误,请在您的 atlas 部署中创建一个数据库用户。 我添加了一个具有读写权限的新用户,但身份验证错误仍然存​​在 权限不影响认证是否成功。您提供的信息不足以诊断身份验证问题。 您用于添加用户的确切步骤,您的确切 URI 和密码已编辑。 docs.atlas.mongodb.com/security-add-mongodb-users【参考方案4】:

在mongo db中进入网络访问并添加IP地址0.0.0.0,一切都会好起来的。

【讨论】:

【参考方案5】:
const client = new MongoClient(uri, 

useNewUrlParser: true,
useUnifiedTopology: true,
);
client.connect(() =>

your_collection = client.db('your_db_name').collection('collection_name')
)

这对我有用。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于MongoDB atlas 连接失败并出现错误 MongoServerSelectionError: connection <monitor> to 52.64.0.234:27017 c的主要内容,如果未能解决你的问题,请参考以下文章

如何将atlas mongodb与集群连接

Node.js 和 MongoDB Atlas Mongoose 连接错误

连接错误:我是 Mongodb 的新手,现在在创建与节点 js 的连接到 mongodb atlas 显示以下错误时,我遇到了 mongodb 的问题

无法使用 MEAN 堆栈连接到 Mongodb.atlas 集群

使用mongo_dart连接到MongoDB Atlas

尝试重置密码时出现 Djongo + Django + MongoDB Atlas DatabaseError