【问题标题】:Python Pymongo auth failedPython Pymongo 身份验证失败
【发布时间】:2014-05-15 15:42:21
【问题描述】:

Pymongo 一直无法登录 MongoDB。我为“root”帐户输入了正确的密码。

Traceback (most recent call last):
  File "index.py", line 3, in <module>
    from apis import app
  File "/home/app/apis/__init__.py", line 16, in <module>
    import apis.call
  File "/home/app/apis/call.py", line 12, in <module>
    import auth
  File "/home/app/apis/auth.py", line 18, in <module>
    connection.api.authenticate(database.ADMIN_ID,database.ADMIN_PASSWD)
  File "/usr/lib64/python2.6/site-packages/pymongo/database.py", line 875, in authenticate
    self.connection._cache_credentials(self.name, credentials)
  File "/usr/lib64/python2.6/site-packages/pymongo/mongo_client.py", line 456, in _cache_credentials
    auth.authenticate(credentials, sock_info, self.__simple_command)
  File "/usr/lib64/python2.6/site-packages/pymongo/auth.py", line 243, in authenticate
    auth_func(credentials[1:], sock_info, cmd_func)
  File "/usr/lib64/python2.6/site-packages/pymongo/auth.py", line 222, in _authenticate_mongo_cr
    cmd_func(sock_info, source, query)
  File "/usr/lib64/python2.6/site-packages/pymongo/mongo_client.py", line 687, in __simple_command
    helpers._check_command_response(response, None, msg)
  File "/usr/lib64/python2.6/site-packages/pymongo/helpers.py", line 178, in _check_command_response
    raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: command SON([('authenticate', 1), ('user', u'root'), ('nonce', u'9e44852e6597a1de'), ('key', u'f132369d21874c9858409e235abff25f')]) failed: auth failed

这里是 pymongo

import pymongo

connection = pymongo.MongoClient("127.0.0.1")
connection.api.authenticate("root","1234")
db = connection.api

pymongo 在密码上使用 md5 吗?看来mongodb数据中有一些不同的密码。

这里是 mongodb admin system.users 数据

{ “用户”:“根”, “密码”:“cde0d84e6749c235a3b4e36d945eb6fe”, “角色”:[ “userAdminAnyDatabase” ] }

你看出哪里不对了吗?

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    就我而言,我升级了 pymongo

    pip install --upgrade pymongo
    

    【讨论】:

    • 升级导致以下错误:ConnectionError("Cannot connect to database %s :\n%s" % (alias, e)) mongoengine.connection.ConnectionError: Cannot connect to database default : False is不是阅读偏好。
    【解决方案2】:

    我尝试连接名为 api 的表。

    connection.api.authenticate("root","1234")
    

    api 表中没有管理员帐户。我确实放入了 system.admin 表。所以,我在 api 表中创建了一个新的管理员帐户,它工作了。

    【讨论】:

      【解决方案3】:

      看来您必须从 Bluemix MongoDB Credentials 中删除证书,保存在一个文件中(例如 certificate.pem),然后按如下方式引用它:

      client = pymongo.MongoClient(uri_string, ssl_ca_certs='c:\data\certificate.pem')

      【讨论】:

        猜你喜欢
        • 2016-11-12
        • 1970-01-01
        • 2021-01-05
        • 2010-09-26
        • 2014-01-24
        • 2017-11-27
        • 1970-01-01
        相关资源
        最近更新 更多