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 access 和 ADD 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的主要内容,如果未能解决你的问题,请参考以下文章
Node.js 和 MongoDB Atlas Mongoose 连接错误
连接错误:我是 Mongodb 的新手,现在在创建与节点 js 的连接到 mongodb atlas 显示以下错误时,我遇到了 mongodb 的问题