python - flask_pymongo 连接Mongodb认证失败
迷茫
迷茫 2017-04-18 09:03:32
0
3
993

在使用flask的flask_pymongo模块时,出现认证错误。
但可以确定用户名和密码没有错。

from flask import Flask
from flask_pymongo import PyMongo
app = Flask(__name__)

app.config['MONGO_URI'] = 'mongodb://root:aaa2016@localhost:27017/mongo_test'
mongo = PyMongo(app, config_prefix='MONGO')


@app.route('/')
def hello_world():
    mongo.db.user.insert({'username': "aaa"})
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

访问127.0.0.1:5000时,报出Authentication failed.

raceback (most recent call last):
  File "C:\Python27\lib\site-packages\flask\app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Python27\lib\site-packages\flask\app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Python27\lib\site-packages\flask\app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Python27\lib\site-packages\flask\app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Python27\lib\site-packages\flask\app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "F:/PycharmProjects/flask_/flask_.py", line 11, in hello_world
    mongo.db.sitelist.insert({'ss': "ss"})
  File "C:\Python27\lib\site-packages\pymongo\collection.py", line 2203, in insert
    with self._socket_for_writes() as sock_info:
  File "C:\Python27\lib\contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "C:\Python27\lib\site-packages\pymongo\mongo_client.py", line 718, in _get_socket
    with server.get_socket(self.__all_credentials) as sock_info:
  File "C:\Python27\lib\contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "C:\Python27\lib\site-packages\pymongo\server.py", line 152, in get_socket
    with self.pool.get_socket(all_credentials, checkout) as sock_info:
  File "C:\Python27\lib\contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "C:\Python27\lib\site-packages\pymongo\pool.py", line 541, in get_socket
    sock_info.check_auth(all_credentials)
  File "C:\Python27\lib\site-packages\pymongo\pool.py", line 306, in check_auth
    auth.authenticate(credentials, self)
  File "C:\Python27\lib\site-packages\pymongo\auth.py", line 436, in authenticate
    auth_func(credentials, sock_info)
  File "C:\Python27\lib\site-packages\pymongo\auth.py", line 416, in _authenticate_default
    return _authenticate_scram_sha1(credentials, sock_info)
  File "C:\Python27\lib\site-packages\pymongo\auth.py", line 188, in _authenticate_scram_sha1
    res = sock_info.command(source, cmd)
  File "C:\Python27\lib\site-packages\pymongo\pool.py", line 213, in command
    read_concern)
  File "C:\Python27\lib\site-packages\pymongo\network.py", line 99, in command
    helpers._check_command_response(response_doc, None, allowable_errors)
  File "C:\Python27\lib\site-packages\pymongo\helpers.py", line 196, in _check_command_response
    raise OperationFailure(msg % errmsg, code, response)
OperationFailure: Authentication failed.
127.0.0.1 - - [21/Jun/2016 20:23:19] "GET / HTTP/1.1" 500 -

求教。。。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(3)
巴扎黑

Flask_pymongo를 사용해본 적은 없지만 참고용으로 pymongo를 사용해보시면 됩니다

으아악
PHPzhong

pymongo 또는 flask-mongoalchemy

을 직접 사용하는 것이 좋습니다.
黄舟

그 이유는 제가 직접 찾았습니다.
여기에 보고된 오류: Authentication failed. 로그인한 사용자에게 해당 데이터베이스에 대한 운영 권한이 없기 때문입니다.
시스템의 사용자 테이블 보기 db.getCollection('system.users').find({}):

으아악

여기에는 admin 데이터베이스 권한만 있고 mongo_test 데이터베이스 작업 권한은 없는 것을 볼 수 있습니다. 사용자 테이블에 해당 라이브러리 권한을 추가할 수 있습니다.
flask_pymongoflask_mongoengine에 있는데 왜 pymongo가 데이터베이스 권한에 응답할 필요가 없는지 아직도 이해가 되지 않습니다. . .

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!