注册

MongoDB 用户管理

下面详细讲解“MongoDB 用户管理”的完整攻略。

1. 前置条件

在进行MongoDB用户管理之前,需要完成以下配置:

  1. 安装MongoDB
  2. 启用认证配置

2. 配置用户角色

MongoDB提供了多种角色,不同角色具有不同的权限。在配置用户时需要指定用户角色。

常见的角色有:

  1. read:用户只能读取数据,不能修改或删除数据。
  2. readWrite:用户可以读写数据,但不能修改用户和角色。
  3. dbAdmin:用户只能管理特定数据库。
  4. userAdmin:用户可以管理用户和角色,但不能读写数据。

具体可以参考官方文档。

3. 创建用户

在MongoDB中,可以使用db.createUser()函数创建用户。

下面是一个创建用户的示例代码:

use admin
db.createUser({
  user: "user1",
  pwd: "password1",
  roles: [
    { role: "readWrite", db: "test" },
    "userAdmin"
  ]
})

这个代码创建了一个名为user1的用户,密码为password1,并且分配了一个readWrite角色和一个userAdmin角色。其中,readWrite角色允许用户在数据库test中读写数据,而userAdmin角色允许用户管理其他用户和角色。

注意:

  • 在创建用户之前,需要先使用超级管理员帐号验证身份。
  • 如果要在多个数据库中授予某个角色,可以在db选项中指定多个数据库名称。

4. 修改用户

如果需要修改用户,可以使用db.updateUser()函数。

下面是一个修改用户的示例代码:

use admin
db.updateUser("user1", {
  roles: [
    { role: "read", db: "test" },
    "dbAdmin"
  ]
})

这个代码修改了user1用户的角色,从readWriteuserAdmin变为readdbAdmin

注意:在修改用户时,需要先使用超级管理员帐号验证身份。

5. 删除用户

如果需要删除用户,可以使用db.dropUser()函数。

下面是一个删除用户的示例代码:

use admin
db.dropUser("user1")

这个代码删除了名为user1的用户。

注意:

  • 在删除用户时,需要先使用超级管理员帐号验证身份。
  • 删除用户将从所有数据库中删除该用户的权限。

示例说明

下面是两个示例,分别演示了如何创建和修改用户。

示例1:创建用户

  1. 首先,启动MongoDB,使用超级管理员帐号验证身份。

mongo --authenticationDatabase admin -u admin -p

  1. 在MongoDB shell中,切换到admin数据库。

use admin

  1. 使用db.createUser()函数创建一个名为testuser的用户。

db.createUser({
user: "testuser",
pwd: "password1",
roles: [
{ role: "readWrite", db: "testdb" },
"userAdmin"
]
})

这个代码创建了一个名为testuser的用户,密码为password1,并且分配了一个readWrite角色和一个userAdmin角色。其中,readWrite角色允许用户在数据库testdb中读写数据,而userAdmin角色允许用户管理其他用户和角色。

  1. 使用db.auth()函数验证testuser用户的身份。

db.auth("testuser", "password1")

如果验证成功,MongoDB将返回1

注意:验证身份之前,需要先切换到要验证的数据库。

示例2:修改用户

  1. 首先,启动MongoDB,使用超级管理员帐号验证身份。

mongo --authenticationDatabase admin -u admin -p

  1. 在MongoDB shell中,切换到admin数据库。

use admin

  1. 使用db.updateUser()函数修改testuser用户的角色。

db.updateUser("testuser", {
roles: [
{ role: "read", db: "testdb" },
"dbAdmin"
]
})

这个代码修改了testuser用户的角色,从readWriteuserAdmin变为readdbAdmin

注意:在修改用户时,需要先使用超级管理员帐号验证身份。