Mongodb身份验证应用程序 - db.auth()

时间:2016-12-08 13:10:34

标签: node.js mongodb authentication

我有一个node js程序,它使用mongodb作为其dbs,看起来像这样:

show dbs
  test
  eas
use eas
show collections
  nodeurls
  nodes
  users

在这个阶段,每个人都可以访问mongo shell并查看所有集合及其中的数据。但是,我想添加身份验证,以便有人首先必须对mongo shell进行身份验证,然后才能查看mongo db数据。

我找到了这个:https://docs.mongodb.com/manual/core/authentication/

并尝试使用db.auth()方法,但我不明白这是如何完全有效的。

我假设我首先要创建一个用户(我只想让一个用户使用db mongo shell)然后用户需要进行身份验证吗?

对此有任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

关于这一点

  

但是,我想添加身份验证,以便有人首先必须对mongo shell进行身份验证,然后才能查看mongo db数据。

根据文档here,我通过以下方式创建了用户名/密码身份验证。

在admin db中以这种方式创建用户。

cell.postImageView.clipToBounds = true

因此,身份验证适用于所有数据库。 所以显示dbs,显示任何数据库中的集合都可以。

连接shell的方法是,

使用参数auth

启动mongod
  

C:\ MongoDB \ Server \ 3.2 \ bin \ mongod.exe --auth --port 27017

然后打开带身份验证的mongo shell

  

C:\ MongoDB \ Server \ 3.2 \ bin \ mongo.exe --port 27017 -u“sfk”-p“sfk”--authenticationDatabase“admin”

其中u - 用户名,密码

现在我们可以在任何数据库上发出任何命令。

我们还可以对特定数据库的用户进行身份验证,如文档中所示。

db.CreateUser({
  "user" : "sfk",
  "db" : "admin",
  "roles" : [
          {
                  "role" : "root",
                  "db" : "admin"
          }]
})
  

使用db.auth

启动mongo shell而不进行身份验证。然后转到admin db。

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

现在用户已通过身份验证。

如果需要额外的详细信息,请在评论中发帖。