【问题标题】:MongoDB remote connection via RoboMongo通过 RoboMongo 进行 MongoDB 远程连接
【发布时间】:2015-03-04 11:50:57
【问题描述】:

我正在尝试通过 Robomongo 连接到我的 Mongodb 服务器。

我已在服务器mongod.conf 上将Bind_ip 更改为0.0.0.0 我还设置了auth=true 字段。

现在,当我尝试从 RoboMongo 登录时,我遇到了身份验证失败错误。

老实说,我不知道用户名或密码是什么(我在安装 Mongo 后没有设置任何用户,我不想这样做,因为我正在使用 nodeJs 来查询数据库以及当我尝试登录时在我的身份验证也失败了[这就是 mongoskin])

Mongodb 有默认用户名或密码吗?或者我还能做什么?

【问题讨论】:

标签: mongodb robo3t


【解决方案1】:

Mongodb 有默认用户名或密码吗?

MongoDB 没有创建默认用户,但是如果您刚刚启用了身份验证并且没有created your first user yet(应该是用户管理员),那么您必须通过 localhost 连接来设置初始用户。默认情况下启用localhost exception,以专门允许创建启用身份验证的第一个用户。如果没有有效的用户凭据,远程连接将无法进行身份验证。

拥有created the required user(s) 后,您应该能够使用这些凭据使用Robomongo 或其他界面(如mongo shell 或您的mongoskin 应用程序)远程登录。

如果您不想使用 localhost 异常,另一种方法是在禁用身份验证的情况下启动 MongoDB 服务器,远程添加所需的用户,然后在启用身份验证的情况下重新启动服务器。

【讨论】:

    【解决方案2】:

    您需要的只是文档:http://docs.mongodb.org/manual/tutorial/enable-authentication/

    创建管理员用户(角色):

    use admin
    db.createUser(
      {
        user: "siteUserAdmin",
        pwd: "password",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    

    添加普通用户(读写角色):

    use reporting
    db.createUser(
        {
          user: "reportsUser",
          pwd: "12345678",
          roles: [
             { role: "read", db: "reporting" },
             { role: "read", db: "products" },
             { role: "read", db: "sales" },
             { role: "readWrite", db: "accounts" }
          ]
        }
    )
    

    要添加管理员,您可能需要使用 auth=false 启动 mongo,添加 adminuser,然后重新启用 auth=true

    查看角色db.getRoles()

    【讨论】:

    • 有时文档无法让您越过终点线。我来到这里是因为我遇到了与 OP 非常相似的身份验证问题。事实上,我可以使用 mongo shell 从我的远程主机进行身份验证——但 Robomongo 仍然无法工作。那时我发现了这个:stackoverflow.com/questions/29325011/…。请注意,我有 Robomongo 0.8.5 和 Mongo 3.0.3,因此这种组合不起作用。我需要更新 Robomongo。
    • @MikeS 我不知道这一点。我认为我的回答和您的评论将帮助许多其他有同样问题的人。
    猜你喜欢
    • 2016-04-27
    • 2010-10-17
    • 2016-06-24
    • 2016-09-25
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2018-05-20
    • 2015-04-04
    相关资源
    最近更新 更多