web-dev-qa-db-ja.com

pymongoによるmongodb認証のユーザー名パスワードを検証するにはどうすればよいですか?

認証メカニズムの例については、 http://api.mongodb.org/python/current/examples/authentication.html サイトを参照しています。ユーザー管理者を作成し、その資格情報を使用して、「レポート」データベース用のユーザーを作成しました。ユーザー名とパスワードを使用してpymongoから同じものにアクセスする必要があります。 python Shellで次のコマンドを試しました。認証が失敗したため、これは正しい方法ですか?.

from pymongo import MongoClient

client = MongoClient('localhost')

client.reporting.authenticate('reportsUser', '123456', mechanism='MONGODB-CR')

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/pymongo/database.py", line 746, in authenticate
    self.connection._cache_credentials(self.name, credentials)
  File "/usr/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 441, in _cache_credentials
    auth.authenticate(credentials, sock_info, self.__simple_command)
  File "/usr/lib/python2.7/dist-packages/pymongo/auth.py", line 214, in authenticate
    auth_func(credentials[1:], sock_info, cmd_func)
  File "/usr/lib/python2.7/dist-packages/pymongo/auth.py", line 194, in _authenticate_mongo_cr
    cmd_func(sock_info, source, query)
  File "/usr/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 607, in __simple_command
    helpers._check_command_response(response, None, msg)
  File "/usr/lib/python2.7/dist-packages/pymongo/helpers.py", line 147, in _check_command_response
    raise OperationFailure(msg % errmsg, code)
pymongo.errors.OperationFailure: command SON([('authenticate', 1), ('user', u'reportsUser'), ('nonce', u'f8158a24f1c61650'), ('key', u'14cea216c54b93bae20acd2e076bb785')]) failed: auth failed
9
Mrunmayee

参考までに、URI文字列形式も使用できます。擬似コードは次のようになります。

pymongo.MongoClient( 'mongodb:// user:password @ server:port /')

Authを使用した簡単な接続コードブロックを次に示します。

import pymongo
conn = pymongo.MongoClient('mongodb://root:pass@localhost:27017/')
db = conn['database']
coll = db['collection']

ここにクエリ文字列のオプションがあります: http://docs.mongodb.org/manual/reference/connection-string/

それが役立つことを願って=あなたはすでにそれを持っているように見えます。ハッピーコーディング!!

11
RandallShanePhD