【问题标题】:connection times out when trying to connect to mongodb atlas with python尝试使用python连接到mongodb atlas时连接超时
【发布时间】:2018-07-25 19:14:50
【问题描述】:

我正在尝试连接到我的 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

代码

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

【问题讨论】:

  • 您能否检查您要连接的 IP 地址是否已在 Atlas 实例中列入白名单,并且没有客户端防火墙阻止您创建与 Atlas 的连接?
  • 我的ip地址被列入白名单,可能是客户端防火墙我会检查它,谢谢你的回应。

标签: python mongodb pymongo mongodb-atlas


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的回复,我当时已经解决了,但是我不记得我是怎么做到的了。我很确定这不是您的做法,但仍然感谢您的回复!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多