pymongo和烧瓶的认证问题

时间:2015-10-04 19:19:07

标签: python mongodb flask mlab

我正在尝试连接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连接,它工作正常!

谢谢,

弗朗西斯

2 个答案:

答案 0 :(得分:1)

出于某种原因,PyMongo 3.0.3无效。他们 - Mongolab - 说驱动程序应该与MongoDB 3.0兼容,而PyMongo 3.0.3则是。 我又回到了PyMongo 2.8,现在可以使用了。

答案 1 :(得分:0)

使用时收到相同的错误消息:MongoDB 2.6和PyMongo 3.2。尝试将我的PyMongo降级到版本2.7和2.8,但没有工作。最后,通过更新连接字符串以包含数据库,我成功连接。

更改自:

$('input[name="price-option"]').change(function(){
  if( $(this).val() == 0) {
    $('input#price, #currency').attr('readonly', false);
  } else if ( $(this).val() == 1) {
    $('input#price, #currency').attr('readonly', true);
  } else if ( $(this).val() == 2) {
    $('input#price, #currency').attr('readonly', true);
  }
  $('input#price').val($(this).attr('id'));
});

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

如果使用凭据,MongoDB版本2.6要求连接字符串包含数据库。如果未包含数据库,则mongo客户端将尝试进行身份验证并连接到默认的管理数据库。它详细here

相关问题