• 【pymongo】连接认证 auth failed解决方法


    故事背景:

    我在虚拟机(ip:192.168.xx.xx)上建立了一个mongo的数据库,里面已经存好了内容。里面的一个database叫做 "adb", 里面有个collection, 叫做"acol"

    我打开了mongo的认证功能,并且把用户"userA"授予了访问"adb"的权限。

    然后,我用下面的方式连接

    import pymongo
    host = '192.168.xx.xx'
    conn = pymongo.MongoReplicaSetClient('mongodb://%s:%s@%s' % ("userA", "password", host))
    db = conn["adb"]
    collect = db["acol"]

    结果报错:

    pymongo.errors.OperationFailure: command SON([('authenticate', 1), ('user', u''), ('nonce', u''), ('key', u'')]) on namespace admin.$cmd failed: auth failed

    然后,各种纠结。后来看了官网,终于找到了解决方法。

    http://api.mongodb.org/python/current/examples/authentication.html

    1.查看pymongo版本: 结果为3.2

    pip list -v

    2.查看mongoDB版本: 结果为2.6

    在mongo终端中输入

    db.version()

    mongoDB有不同的认证机制,3.0版本以后采用的是'SCRAM-SHA-1', 之前的版本采用的是'MONGODB-CR'。所以,以我的版本情况,显然应该用'MONGODB-CR'

    用下面的方法连接,就成功了。

    host = '192.168.xx.xx'
    client = pymongo.MongoClient(host)
    client.adb.authenticate("userA", "password", mechanism='MONGODB-CR')
    db = client["adb"]
    collection = db["acol"]
  • 相关阅读:
    从1到n中找到任意num个数的和为sum的所有组合
    算法导论5.12
    使用c++技术实现下载网页
    算法导论5.13
    感慨
    算法导论2.37
    [转载]Yahoo!的分布式数据平台PNUTS简介及感悟
    Bigtable 论文笔记
    GFS 论文笔记
    MapReduce论文笔记
  • 原文地址:https://www.cnblogs.com/dplearning/p/5127869.html
Copyright © 2020-2023  润新知