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

Ale*_*lex 5 python mongodb pymongo mongodb-atlas

我正在尝试连接到我的 mongodb atlas 集群,但是一旦我尝试对我的数据库做一些事情,我就会一直超时。

我使用的 db 是在 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
Run Code Online (Sandbox Code Playgroud)

代码

client = MongoClient("""mongodb://user:password@projekt-shard-00-00-rk7ft.mongodb.net: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
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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

就是这样,它会起作用的!


小智 1

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

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

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

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