分析:mongo账号及密码正确,不指定的集合可以连接

解决方案:

指定集合必须使用authSource=admin&retryWrites=true&w=majority 来指定认证

如果用户是在管理数据库中创建的,但您希望使用URI连接到其他数据库,则需要在URI中指定authSource,以便找到正确的用户帐户

格式:mongo://adminName:adminPassword@localhost:27017/otherdb?authSource=admin&retryWrites=true&w=majority"

db_uri = "mongodb://" + usr + ":" + pwd + "@" + \
    url + "/test_db?authSource=admin&retryWrites=true&w=majority"

参考:

https://stackoverflow.com/questions/72048051/pymongo-auth-failure-ok-0-0-errmsg-authentication-failed-code-18

https://www.5axxw.com/questions/content/khqgbe