无法查询mongolab mongodb

时间:2013-07-12 17:09:22

标签: node.js mlab nodejitsu

我正在使用Nodejitsu及其打包的Mongolab MongoDB数据库。我运行了命令jitsu databases get myDB,我得到了如何通过mongo CLI连接的说明。该命令的输出有一行说明如下:

help:    Connect with the `mongo` cli client:
help:    
             $ mongo ds039267.mongolab.com:39267/nodejitsu_xxxxxx_nodejitsudb8577296358 -u nodejitsu_xxxxxx -p mypassword

注意:这是我第一次通过CLI连接到此实例。我只通过jitsu databases create…

创建了数据库名称

我正在使用Mongo Shell版本1.8.3。我连接到我的MongoDB实例。我尝试运行命令:show dbs然后我得到了:

uncaught exception: listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" }

我正在使用Mongoose,我有一个名为Post的模型。我尝试在CLI中运行:db.post.find(),我得到了:

error: { "$err" : "not authorized for query on hotel.post", "code" : 16550 }

这是什么意思?我没有被授权;我以为我连接成功了?

更新

我将我的mongo shell升级到最新的2.4.x版本,但我仍然遇到了这个问题。任何人都有任何与nodejitsu& amp; mongolab?

4 个答案:

答案 0 :(得分:4)

MongoLab创建需要经过身份验证的用户才能访问的数据库。与Shell连接时,需要为shell命令提供UserName和Password。文档为here

mongo --username Mark --password something

您还需要在mongoose中配置用户名/密码组合。关于可行方法的Mongoose docs have details

请注意,您使用的是非常旧shell。 1.8.3大约是当前2.4。*行的4个版本。这与你的问题没有直接关系,但这肯定是你应该纠正的问题。

答案 1 :(得分:3)

在mongo shell中尝试再次进行身份验证:

db.auth('yourUsername','yourPassword');

答案 2 :(得分:0)

一个可能的错误可能就像我一样:在密码中使用特殊字符会破坏URI!

生成的密码是

X/apm~nq5JaJ,5

所以很明显,/打破了请求,我得到了:

MongoError: not authorized for query on apm~nq5JaJ.system.indexes

答案 3 :(得分:0)

您可以尝试在URI的末尾添加:?authMode=scram-sha1