# MongoDB 用户
# 用户管理
MongoDB 安装完成后,数据库 admin
中没有任何用户账户。在数据库 admin 中没有任何账户时,MongoDB 向从本地主机发起的连接提供全面的数据库管理权限。因此配置 MongoDB 新实例时,首先需要创建用户管理员账户
和数据库管理员账户
- 用户管理员账户(仅管理用户): 可在 admin 和其他数据库中创建用户账户
- 数据库管理员账户(管理数据): 管理数据库、集群、复制和 MongoDB 其他方面的超级用户
# 创建用户
进入控制台
mongo
切换数据库
use admin
# 创建 用户管理员(超级管理员用户)
db.createUser(
{ user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
用户管理员应只有创建用户账户的权限,而不能管理数据库或执行其他管理任务,要创建某个库的管理用户,必须在 admin 进行认证,给哪个库创建用户就先切换到哪个库下面
解释
user: 用户名字
pwd: 用户密码
roles: 指定用户的角色,此处设置内置的角色 userAdminAnyDatabase 来管理admin数据库
# 创建一个不受访问限制的超级用户
db.createUser(
{
user:"root",
pwd:"pwd",
roles:["root"]
}
)
# 创建一个业务数据库管理员用户
>
db.createUser({
user: "user001",
pwd: "123456",
roles:[
{role:"readWrite",db:"db001"},
{role:"readWrite",db:"db002"},
'read'// 对其他数据库有只读权限,对db001、db002是读写权限
]
})
>
db.createUser(
{
user:"test",
pwd: "test1",
roles: [{ role: "readWrite", db: "book"}]
}
)
# 查看用户
show users
# 删除数据库用户
use admin
db.dropUser('user001')
# 开启权限认证
# 权限管理 Roles
Built-In Roles(内置角色):
1. 数据库用户角色:read、readWrite
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
4. 备份恢复角色:backup、restore
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
← MongoDB 安装 Nginx 基础 →