1

我正在运行 Mongo 2.2.0,分片和复制,并且使用 python (pymongo 2.1.1) 有一些奇怪的行为。

注意事项:

在我尝试访问的每个数据库上都创建了具有正确权限的用户。

以下是通过 mongo 路由器连接的。

MONGO_URI 是在部署早期设置的环境变量: $MONGO_URI = "mongodb://USER:PASSWORD@localhost:27017/DB"

我可以通过 mongo shell 很好地进行身份验证、读取和写入,我还可以启动 python 会话并且以下工作正常:

    >>> import pymongo
    >>> import os
    >>> c = pymongo.Connection(os.environ['MONGODB_URI'])
    >>> c.DB.COLL.insert(dict(a=2))
    >>> list(c.DB.COLL.find())

但是当我在插入时使用 safe=True 时:

    >>> import pymongo
    >>> import os
    >>> c = pymongo.Connection(os.environ['MONGODB_URI'])
    >>> c.DB.COLL.insert(dict(a=2), safe=True)

我收到此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "local/lib/python2.7/site-packages/pymongo/collection.py", line 312, in insert
    continue_on_error, self.__uuid_subtype), safe)
  File "local/lib/python2.7/site-packages/pymongo/connection.py", line 822, in    _send_message
    return self.__check_response_to_last_error(response)
  File "local/lib/python2.7/site-packages/pymongo/connection.py", line 759, in __check_response_to_last_error
    helpers._check_command_response(error, self.disconnect)
  File "local/lib/python2.7/site-packages/pymongo/helpers.py", line 128, in _check_command_response
    raise OperationFailure(msg % response["errmsg"])
pymongo.errors.OperationFailure: unauthorized

我是否以错误的方式调用某些东西,或者在某处可能存在 auth 和安全的错误?我倾向于首先相信自己的错误,但如果我在插入语句中保持安全,我会得到正确的行为。

我研究了这些主题:

Pymongo 在尝试访问远程服务器时给出 db 断言失败 Pymongo 安全插入的权限问题 OperationFailure:在 MongoEngine/PyMongo 中进行线程处理时出现数据库错误

...但我还没有找到不需要我停用身份验证的答案。

编辑:我还在 googlegroup 上发布并得到了答案,这是 pymongo 中的一个错误。我升级到 2.3,一切正常。

https://groups.google.com/forum/?fromgroups=#!topic/mongodb-user/UlbW4942xsw

4

0 回答 0