使用用户帐户登录MongoDB

MongoDB login with user account

本文关键字:登录 MongoDB 用户      更新时间:2023-09-26

我根据文档创建了一个管理用户:

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登录。

感谢任何帮助,谢谢。

当您使用来自mongoose或其他驱动程序的用户凭据进行连接时,通常首选使用连接字符串格式。

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

当然,还可以连接到前面提到的身份验证数据库

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

对于需要执行管理选项的连接,情况就是这样。否则,可以提供凭据,并连接到帐户具有权限的适当数据库。

您可以通过指定数据库来使用xuser进行日志记录。我创建了与您相同的用户,并尝试从控制台登录,效果很好。

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

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

db.runCommand({connectionStatus: 1});
//output
{
        "authInfo" : {
                "authenticatedUsers" : [
                        {
                                "user" : "xuser",
                                "db" : "x"
                        }
                ]
        },
        "ok" : 1
}