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

PyMongo使用错误认证库仍能获取客户端且无法读写test库?

问题1解答

你能拿到MongoClient实例不代表已经通过admin库完成身份认证:
PyMongo初始化MongoClient时默认采用延迟认证逻辑,构造客户端阶段只会和服务端建立基础TCP连接,不会立刻执行身份校验,只要MongoDB端口可连通,不管传入的认证信息、认证源是否正确,都能生成MongoClient实例。
另外MongoDB的用户是和创建时的数据库绑定的(该数据库称为用户的认证源authSource),你在test库下创建的user1仅存在于test库的用户集合中,admin库没有该用户的记录,根本不可能通过admin库完成认证。

问题2解答

无法对test库执行读写是因为认证源配置错误:
你的连接URI末尾指定了/admin,相当于默认将admin作为认证源校验用户身份,服务端在admin库中找不到user1的记录,等到你实际执行读写操作触发认证流程时,会直接认证失败,自然没有对应操作权限。

正确连接示例

你需要在连接时指定test作为认证源,两种常用写法如下:

# 写法1:URI中直接指定默认操作库为test,自动以test为认证源
my_client = MongoClient("mongodb://user1:abc123@127.0.0.1:27017/test")

# 写法2:显式指定authSource参数,适用默认操作库不是test的场景
my_client = MongoClient("mongodb://user1:abc123@127.0.0.1:27017/?authSource=test")

# 后续操作test库
test_db = my_client.test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:15:03