我正在使用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?
答案 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