无法查询mongolab mongodb

我正在使用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连接到这个实例。 我只创build数据库名称通过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&mongolab?

MongoLab创build需要经过身份validation的用户才能访问的数据库。 与Shell连接时,需要将用户名和密码提供给shell命令。 文档在这里 。

mongo --username Mark --password something

您需要将该用户名/密码组合configuration在mongoose内部。 Mongoose文档详细介绍了可能的方法。

请注意,您正在使用一个非常旧的shell。 从目前的2.4。*版本开始,1.8.3版本大约有4个版本。 这与你的问题没有直接关系,但是这绝对是你应该纠正的问题。

在mongo shell里面再次尝试authentication:

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

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

生成的密码是

 X/apm~nq5JaJ,5 

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

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

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