You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下Python连接MongoDB Atlas遇DNS查询不存在错误求助

解决Ubuntu 22.04中Python连接MongoDB Atlas的DNS解析错误

我帮你分析下问题的核心,然后一步步解决这个DNS错误:

从你给出的错误日志和DNS查询结果来看,最直接的问题是代码里的MongoDB连接字符串域名不完整,导致DNS找不到对应的SRV记录。我们来逐个排查修复:

1. 修正连接字符串的核心问题

你代码里的连接字符串是:

CONNECTION_STRING = “mongodb+srv://projegui:@clusterak.mongodb.net/myFirstDatabase”

这里有两个致命问题:

  • 密码缺失:projegui:@里@前面是空的,必须替换成你MongoDB Atlas数据库用户的真实密码
  • 域名不完整:从你执行的nslookup/host命令能看到,正确的集群域名是clusterak.mp9ylv1.mongodb.net,但你代码里只写了clusterak.mongodb.net,少了后缀mp9ylv1,这直接导致DNS查询_mongodb._tcp.clusterak.mongodb.net时返回不存在。

解决方法:直接从MongoDB Atlas控制台复制正确的连接字符串:

  1. 登录Atlas控制台,进入你的集群页面
  2. 点击「Connect」→「Connect your application」
  3. 选择Python驱动,复制生成的完整连接字符串(记得替换<password>为你的真实密码)

修正后的代码示例:

from pymongo import MongoClient

def get_database():
    # 替换为从Atlas复制的正确连接字符串,务必替换<your-password>为真实密码
    CONNECTION_STRING = "mongodb+srv://projegui:your_actual_password@clusterak.mp9ylv1.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"

    client = MongoClient(CONNECTION_STRING)
    return client['myFirstDatabase']

if __name__ == "__main__":
    try:
        dbname = get_database()
        print("MongoDB Atlas连接成功!")
        # 可以加个简单的测试,比如列出集合
        print("数据库中的集合:", dbname.list_collection_names())
    except Exception as e:
        print(f"连接失败:{e}")

2. 确保依赖包版本正确

mongodb+srv://格式的连接需要dnspython来解析SRV记录,旧版本的pymongo或dnspython可能存在兼容性问题,执行以下命令升级依赖:

pip install --upgrade pymongo dnspython

3. 验证DNS解析(可选)

从你给出的host命令结果来看,_mongodb._tcp.clusterak.mp9ylv1.mongodb.net是可以正常解析的,所以只要连接字符串正确,这一步应该没问题。如果还是遇到DNS问题,可以临时切换DNS服务器到Google的公共DNS测试:

# 临时修改DNS(重启系统后会恢复)
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

4. 检查Atlas IP白名单(后续验证)

如果DNS问题解决后还是连接失败,要检查你的Ubuntu机器公网IP是否在MongoDB Atlas的IP白名单里:

  1. 进入Atlas控制台的「Network Access」页面
  2. 添加你的机器公网IP,或者暂时设置为0.0.0.0/0(允许所有IP,测试用,生产环境不要这么做)

按照上面的步骤修改后,应该就能正常连接MongoDB Atlas了。

内容的提问来源于stack exchange,提问作者SrKartcheski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:31:13