2015-10-04 46 views
2

我正在嘗試連接pymongo和燒瓶。我這樣做:pymongo和燒瓶的身份驗證問題

app.config['MONGO_HOST'] = 'ds02XX.mongolab.com' 
app.config['MONGO_PORT'] = '29224' 
app.config['MONGO_DBNAME'] = 'myusername' 
app.config['MONGO_USERNAME'] = 'myusername' 
app.config['MONGO_PASSWORD'] = 'thislongpasswordthatigotfrommongolab' 

然而,當我打電話mongo=PyMongo(app),它根本不起作用。我得到這個錯誤:

pymongo.errors.OperationFailure: command SON([('authenticate', 1), ('user', u'myusername'), ('nonce', u'somenumbers'), ('key', u'othernumbers')]) failed: auth failed 

有什麼我可以做的檢查?我用相同的數據通過mongo shell連接,並且它工作正常!

感謝,

弗朗西斯

+0

什麼版本的mongodb和pymongo? –

+0

我使用的是heroku和mongolab,所以我不確切知道哪個版本是由mongolab運行的。然而,我的requirements.txt如下:Flask == 0.10.1 Flask-PyMongo == 0.3.1 Flask-RESTful == 0.3.4 Jinja2 == 2.7.3 MarkupSafe == 0.23 Werkzeug == 0.9.6 aniso8601 == 0.82 gunicorn == 19.0.0 itsdangerous == 0.24 pymongo == 3.0.3 pytz == 2014.4 6 == 1.7.2 – francisaugusto

+0

它本地工作,但不是在Heroku - 不知何故我在本地修復它。 – francisaugusto

回答

1

出於某種原因,PyMongo 3.0.3不工作。他們 - Mongolab - 說驅動程序應該與MongoDB 3.0兼容,而PyMongo 3.0.3是。 我恢復到PyMongo 2.8,它現在可以工作。

0

我在使用MongoDB 2.6和PyMongo 3.2時遇到了同樣的錯誤信息。試圖降級我的PyMongo到版本2.7和2.8,但沒有工作。最後,我通過更新連接字符串以包含數據庫來成功連接。

從:更改

'mongodb://'+ MONGODB[ 'username' ] + ':' + MONGODB[ 'password' ] + '@' + MONGODB['server'] + ':' + MONGODB['port'] + '/' 

'mongodb://'+ MONGODB[ 'username' ] + ':' + MONGODB[ 'password' ] + '@' + MONGODB['server'] + ':' + MONGODB['port'] + '/' + MONGODB['database'] 

MongoDB的2.6版需要連接字符串,如果使用的憑證,包括數據庫。如果不包含數據庫,那麼mongo客戶端將嘗試進行身份驗證並連接到默認的管理數據庫。這是詳細的here