下面详细讲解“MongoDB 用户管理”的完整攻略。
1. 前置条件
在进行MongoDB用户管理之前,需要完成以下配置:
- 安装MongoDB
- 启用认证配置
2. 配置用户角色
MongoDB提供了多种角色,不同角色具有不同的权限。在配置用户时需要指定用户角色。
常见的角色有:
- read:用户只能读取数据,不能修改或删除数据。
- readWrite:用户可以读写数据,但不能修改用户和角色。
- dbAdmin:用户只能管理特定数据库。
- 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
用户的角色,从readWrite和userAdmin变为read和dbAdmin。
注意:在修改用户时,需要先使用超级管理员帐号验证身份。
5. 删除用户
如果需要删除用户,可以使用db.dropUser()
函数。
下面是一个删除用户的示例代码:
use admin
db.dropUser("user1")
这个代码删除了名为user1
的用户。
注意:
- 在删除用户时,需要先使用超级管理员帐号验证身份。
- 删除用户将从所有数据库中删除该用户的权限。
示例说明
下面是两个示例,分别演示了如何创建和修改用户。
示例1:创建用户
- 首先,启动MongoDB,使用超级管理员帐号验证身份。
mongo --authenticationDatabase admin -u admin -p
- 在MongoDB shell中,切换到admin数据库。
use admin
- 使用
db.createUser()
函数创建一个名为testuser
的用户。
db.createUser({
user: "testuser",
pwd: "password1",
roles: [
{ role: "readWrite", db: "testdb" },
"userAdmin"
]
})
这个代码创建了一个名为testuser
的用户,密码为password1
,并且分配了一个readWrite角色和一个userAdmin角色。其中,readWrite角色允许用户在数据库testdb
中读写数据,而userAdmin角色允许用户管理其他用户和角色。
- 使用
db.auth()
函数验证testuser
用户的身份。
db.auth("testuser", "password1")
如果验证成功,MongoDB将返回1
。
注意:验证身份之前,需要先切换到要验证的数据库。
示例2:修改用户
- 首先,启动MongoDB,使用超级管理员帐号验证身份。
mongo --authenticationDatabase admin -u admin -p
- 在MongoDB shell中,切换到admin数据库。
use admin
- 使用
db.updateUser()
函数修改testuser
用户的角色。
db.updateUser("testuser", {
roles: [
{ role: "read", db: "testdb" },
"dbAdmin"
]
})
这个代码修改了testuser
用户的角色,从readWrite和userAdmin变为read和dbAdmin。
注意:在修改用户时,需要先使用超级管理员帐号验证身份。