# 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数据库中可用。超级账号,超级权限
陕ICP备20004732号-3