【问题标题】:Unable to query mongolab mongodb无法查询mongolab mongodb
【发布时间】:2013-07-11 07:36:53
【问题描述】:

我正在使用 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 和 mongolab 的经验吗?

【问题讨论】:

  • 嗯,你在认证吗? mongo --username example
  • 是的,我正在验证。我更新了我的问题,如您所见,我使用 jitsu databases get myDB 命令的输出连接到 mongo
  • 您可以尝试运行“显示集合”吗? “show dbs”命令需要管理员数据库权限。如果您仍然遇到问题,请随时发送电子邮件至 support@mongolab.com,以便我们尽快帮助您解决问题!

标签: node.js mlab nodejitsu


【解决方案1】:

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

mongo --username Mark --password something

您还需要在 mongoose 中配置该用户名/密码组合。 Mongoose docs have details 介绍了执行此操作的可能方法。

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

【讨论】:

  • 在大多数情况下,您应该省略 --password something 以便它提示您。如果您包含密码,它将在您使用它时在进程列表中显示给服务器上的其他用户。
  • 等一下,其他用户可以访问 MongoLab 的进程列表吗?他们为什么需要那个?这不是 DBaaS 吗?
  • 再说一遍,“大多数情况下”,这是一个很好的习惯,因此当您通过 SSH 连接到某个共享主机时,您不会无意中暴露您的凭据。
  • 这里有人用nodejitsu吗?因为如果是这样,当您使用 jitsu databases get myDB 命令时,您将获得在命令行中运行的命令,该命令将您连接到 nodejitsu 实例上的 mongodb,而 MongoLab 提供的 mongodb 实例(在 nodejitsu 上)。我正在这样做(是的,我确实输入了密码),但我仍然未经授权......
  • 那么我会联系 MongoLab。也许这是他们的一个简单的错误配置。
【解决方案2】:

在 mongo shell 中再次尝试验证:

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

【讨论】:

    【解决方案3】:

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

    生成的密码是

    X/apm~nq5JaJ,5
    

    所以很明显,/ 中断了请求,我得到了:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2015-08-15
        • 2018-01-21
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 2013-10-11
        • 1970-01-01
        • 2011-12-03
        • 2017-11-14
        相关资源
        最近更新 更多