Node.js 无法查询mongodb mongodb

Node.js 无法查询mongodb mongodb,node.js,mlab,nodejitsu,Node.js,Mlab,Nodejitsu,我正在使用Nodejitsu和他们打包的Mongolab MongoDB数据库。我运行了命令jitsu databases get myDB,并获得了有关如何通过mongo CLI进行连接的说明。该命令的out put有一行内容如下: help: Connect with the `mongo` cli client: help: $ mongo ds039267.mongolab.com:39267/nodejitsu_xxxxxx_nodejitsud

我正在使用Nodejitsu和他们打包的Mongolab MongoDB数据库。我运行了命令
jitsu databases get myDB
,并获得了有关如何通过mongo CLI进行连接的说明。该命令的out put有一行内容如下:

help:    Connect with the `mongo` cli client:
help:    
             $ mongo ds039267.mongolab.com:39267/nodejitsu_xxxxxx_nodejitsudb8577296358 -u nodejitsu_xxxxxx -p mypassword
注意:这是我第一次通过CLI连接到此实例。我只通过柔术数据库创建…<代码>创建了数据库名称

我使用的是MongoShell版本1.8.3。我连接到我的MongoDB实例。我试着运行命令:
showdbs
,结果得到:

uncaught exception: listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" }
我用的是猫鼬,我有一个叫Post的模型。我尝试在CLI中运行:
db.post.find()
,得到:

error: { "$err" : "not authorized for query on hotel.post", "code" : 16550 }
这是什么意思?我没有被授权;我以为我连接成功了

已更新


我将mongo shell升级到了最新的2.4.x版本,但仍然遇到了这个问题。有没有人有过nodejitsu&mongolab的经验?

mongolab创建的数据库需要经过身份验证的用户才能访问。当您连接Shell时,您需要为Shell命令提供用户名和密码。文档是

mongo——用户名标记——密码

您还需要在mongoose中配置用户名/密码组合。专家们正在研究实现这一点的可能方法


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

MongoLab创建的数据库需要经过身份验证的用户才能访问。当您连接Shell时,您需要为Shell命令提供用户名和密码。文档是

mongo——用户名标记——密码

您还需要在mongoose中配置用户名/密码组合。专家们正在研究实现这一点的可能方法


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

在mongo shell中,请再次尝试验证:


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

在mongo shell中再次尝试验证:


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

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

生成的密码为

X/apm~nq5JaJ,5
很明显,他/打破了请求,我得到:

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

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

生成的密码为

X/apm~nq5JaJ,5
很明显,他/打破了请求,我得到:

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

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

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

您正在验证吗
mongo——用户名示例
是,我正在验证。我更新了我的问题,如您所见,我使用
jitsu databases get myDB
命令的输出连接到mongo。您可以尝试运行“show collections”吗?“showdbs”命令需要管理员数据库权限。如果您仍有问题,请随时发送电子邮件support@mongolab.com以便我们能尽快帮你解决这个问题!你在验证吗
mongo——用户名示例
是,我正在验证。我更新了我的问题,如您所见,我使用
jitsu databases get myDB
命令的输出连接到mongo。您可以尝试运行“show collections”吗?“showdbs”命令需要管理员数据库权限。如果您仍有问题,请随时发送电子邮件support@mongolab.com以便我们能尽快帮你解决这个问题!在大多数情况下,您应该省略
——密码,这样它会提示您。如果您将密码包括在内,则在您使用该密码时,它将向服务器上的其他用户显示在进程列表中。请稍候,其他用户是否可以使用MongoLab访问进程列表?他们为什么需要这个?这不是DBaaS吗?再说一次,“在大多数情况下”,这是一个很好的习惯,这样当您在某个时候进入某个共享主机时,您就不会无意中暴露您的凭据。这里有人在使用nodejitsu吗?因为如果是,当您使用jitsu databases get myDB命令时,您将获得在命令行中运行的命令,该命令将您连接到nodejitsu实例上的mongodb,其中mongodb实例(nodejitsu上)由mongodb提供。我正是这么做的(是的,我确实输入了密码),但我仍然未经授权…我会联系蒙古银行,然后。也许这是一个简单的错误配置。在大多数情况下,你应该省略
——密码,所以它会提示你。如果您将密码包括在内,则在您使用该密码时,它将向服务器上的其他用户显示在进程列表中。请稍候,其他用户是否可以使用MongoLab访问进程列表?他们为什么需要这个?这不是DBaaS吗?再说一次,“在大多数情况下”,这是一个很好的习惯,这样当您在某个时候进入某个共享主机时,您就不会无意中暴露您的凭据。这里有人在使用nodejitsu吗?因为如果是,当您使用jitsu databases get myDB命令时,您将获得在命令行中运行的命令,该命令将您连接到nodejitsu实例上的mongodb,其中mongodb实例(nodejitsu上)由mongodb提供。我正是这么做的(是的,我确实输入了密码),但我仍然未经授权…我会联系蒙古银行,然后。也许这只是他们的一个简单的误解。