2016-07-10 7 views
0

데이터베이스와 컬렉션 이름이 같은 mongolab을 사용하여 데이터베이스를 설정했습니다. 나는 이것을 삭제하고 더 나은 명명 체계를 만들지 않았다고 결심했다. 새로운 DB에 대해 새 사용자/암호를 추가하고 인증을 시도했습니다. 계속 실패하고있어. 이유를 모르겠다. 내 신임장을 다시 확인했는데 정확합니다. mongolab이 제공하는 URI를 확인했는데 그 또한 올바른 것입니다. 이 코드는 첫 번째 db에서 잘 작동했습니다.PyMongo 인증에 실패했습니다

이 문제는이와

Error 
Traceback (most recent call last): 
    File "C:\Users\Austin\PycharmProjects\Words\test_mongodb.py", line 15, in testUpdate 
    results = self.mongodb_obj.update(test) 
    File "C:\Users\Austin\PycharmProjects\Words\mongodb.py", line 38, in update 
    upsert=True 
    File "C:\Python33\lib\site-packages\pymongo\collection.py", line 2235, in update 
    with self._socket_for_writes() as sock_info: 
    File "C:\Python33\lib\contextlib.py", line 48, in __enter__ 
    return next(self.gen) 
    File "C:\Python33\lib\site-packages\pymongo\mongo_client.py", line 718, in _get_socket 
    with server.get_socket(self.__all_credentials) as sock_info: 
    File "C:\Python33\lib\contextlib.py", line 48, in __enter__ 
    return next(self.gen) 
    File "C:\Python33\lib\site-packages\pymongo\server.py", line 152, in get_socket 
    with self.pool.get_socket(all_credentials, checkout) as sock_info: 
    File "C:\Python33\lib\contextlib.py", line 48, in __enter__ 
    return next(self.gen) 
    File "C:\Python33\lib\site-packages\pymongo\pool.py", line 541, in get_socket 
    sock_info.check_auth(all_credentials) 
    File "C:\Python33\lib\site-packages\pymongo\pool.py", line 306, in check_auth 
    auth.authenticate(credentials, self) 
    File "C:\Python33\lib\site-packages\pymongo\auth.py", line 436, in authenticate 
    auth_func(credentials, sock_info) 
    File "C:\Python33\lib\site-packages\pymongo\auth.py", line 416, in _authenticate_default 
    return _authenticate_scram_sha1(credentials, sock_info) 
    File "C:\Python33\lib\site-packages\pymongo\auth.py", line 216, in _authenticate_scram_sha1 
    res = sock_info.command(source, cmd) 
    File "C:\Python33\lib\site-packages\pymongo\pool.py", line 213, in command 
    read_concern) 
    File "C:\Python33\lib\site-packages\pymongo\network.py", line 99, in command 
    helpers._check_command_response(response_doc, None, allowable_errors) 
    File "C:\Python33\lib\site-packages\pymongo\helpers.py", line 196, in _check_command_response 
    raise OperationFailure(msg % errmsg, code, response) 
pymongo.errors.OperationFailure: Authentication failed. 

도움 주시면 감사하겠습니다 다음과 같은 오류가 발생하는 경우 내 로그인 코드

def __init__(self, user_id, password, database, collection): 
     # mongodb://<dbuser>:<dbpassword>@ds017205.mlab.com:17205/words 
     mongodb_uri = "mongodb://" + user_id + ":" + password + "@ds017205.mlab.com:17205/" + database 
     client = pymongo.MongoClient(mongodb_uri) 
     db = client[database] 
     self.collection = db[collection] # is declared in class 

입니다. 감사합니다

+0

어떤 버전의 pymongo 및 MongoDB를 사용하고 있습니까? [인증 예제 문서 페이지] (https://api.mongodb.com/python/current/examples/authentication.html)에 따라 비밀번호의 문자를 이스케이프 처리해야합니까? –

+0

mongodb와 pymongo의 최신 버전을 사용하고 있습니다. 가장 최근의 3 ~ 4 일을 다운로드했습니다. pymongo – hiEntropy

+0

에 대한 pip 설치가 암호에서 특별판을 탈출하려고 시도한 것과 같은 결과를 얻었습니다. 또한 그것은 도주하지 않고 전에 일했습니다. – hiEntropy

답변

0

아무 것도 잘못된 코드 ... DB 사용자가 설치 암호 상자에 두 번 똑같은 잘못된 암호를 입력 했으므로 코드가 실제로 올바른 대답을 사용하려 할 때 허용되었습니다. 분명한 이유가 있습니다. 모두에게 감사합니다

관련 문제