MongoDB使用用户帐户登录

时间:2015-03-04 07:33:28

标签: javascript node.js mongodb mongoose

我根据doc:

创建了一个管理用户
use admin
db.createUser(
  {
    user: "siteUserAdmin2",
    pwd: "password",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

然后我在Mongodb控制台中创建一个用户:

use x
db.createUser(
    {
      user: "xuser",
      pwd: "xuser123",
      roles: ["readWrite"]
    }
)

我可以在控制台中登录管理员用户,如下所示:

mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

但是如何登录用户帐户?

我尝试了用户名和密码,它不会让我通过。我也不知道在--authenticationDatabase放什么。我也无法使用Mongoose登录。

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

您可以通过指定数据库来使用xuser进行日志记录。我创建了您拥有的相同用户并尝试从控制台登录,它运行正常。

mongo --username xuser --pasword xuser123 --authenticationDatabase x

登录后,我还运行connectionStatus命令查看当前用户:

db.runCommand({connectionStatus: 1});

//output
{
        "authInfo" : {
                "authenticatedUsers" : [
                        {
                                "user" : "xuser",
                                "db" : "x"
                        }
                ]
        },
        "ok" : 1
}

答案 1 :(得分:3)

当您使用mongoose或其他驱动程序等用户凭据进行连接时,通常首选使用connection string format.

mongoose.connect('mongodb://siteuserAdmin:password@localhost/admin')

当然,如上所述连接到身份验证数据库

  

如果没有为--authenticationDatabase指定值,mongo将使用连接字符串中指定的数据库。

对于需要执行管理选项的连接,情况就是如此。否则,可以提供凭证,并将连接发送到该帐户具有。

权限的相应数据库