尝试使用python连接mongodb atlas时连接超时

问题描述 投票:0回答:4

我正在尝试连接到我的 mongodb atlas 集群,但是当我尝试对我的数据库执行某些操作时,我总是超时。

我使用的数据库是在 mongoshell 中创建的,也是我在 mongodb compass 中检查它们是否存在的集合

错误

pymongo.errors.ServerSelectionTimeoutError: projekt-shard-00-01-rk7ft.mongodb.net:27017: timed out,projekt-shard-00-00-rk7ft.mongodb.net:27017: timed out,projekt-shard-00-02-rk7ft.mongodb.net:27017: timed out

代码

client = MongoClient("""mongodb://user:[email protected]:27017,projekt-shard-00-01-rk7ft.mongodb.net:27017,projekt-shard-00-02-rk7ft.mongodb.net:27017/projekt?ssl=true&replicaSet=projekt-shard-0&authSource=admin""")

    client.projekt.category.insert_one({type : "pants"}).inserted_id
python mongodb pymongo mongodb-atlas
4个回答
5
投票

所以问题出在您的 IP 地址上,

  1. 转到 MongoDB Atlas 中的网络访问面板
  2. IP访问列表部分,您将找到您的所有IP地址
  3. 单击您当前使用的 IP 地址的 edit 选项卡
  4. 将设置更改为允许从任何地方访问

就是这样,它会起作用!


1
投票

这个问题我困扰了好几个小时。奇怪的是,这似乎是一个连接问题,但它并没有抛出错误的身份验证或任何东西,只是这次超时。客户端对象似乎已实际创建(我可以打印其属性)。我一直在玩,这不知何故起作用了:

  • 在 MongoDB GUI 中,导航至数据库访问
  • 添加一个测试用户,其对所有内容具有与设置时创建的初始用户相同的读/写权限
  • 将Python中的连接字符串更改为新用户的用户名+密码
  • 运行代码

对我来说,它终于连接并成功插入了。之后,原始用户的连接字符串现在可以工作了,所以我删除了测试用户。

我无法确定此问题的根本原因,但似乎数据库用户表只需要对其执行某种操作即可刷新并开始接受用户连接。


1
投票

任何寻找解决方案的人,如果您尝试在野外访问 Atlas 实例,请检查“网络访问”选项卡,因为我认为您必须将所有或特定 IP 地址列入白名单


0
投票

我通过在数据库 URI 末尾添加 ?ssl=true 来修复它

© www.soinside.com 2019 - 2024. All rights reserved.