【MongoDB】02_MongoDB用户认证及用户管理

1. 用户认证

1.1 无认证登录
    通过`mongo`命令进入mongodb操作页面
1.2 增加顶级用户
执行 use admin 命令进入到admin数据库里

执行 db.createUser({user:"root",pwd:"root",roles:[{role:"root",db:"admin"}]}) 创建超级管理账户
1.3 添加用户认证配置
打开 mongodb 配置文件, 在其中添加 auth=true 并保存文件; 完成之后重启 mongodb 服务

2. 用户管理

2.1 用户添加
通过 `mongo -u 管理账户 -p 管理账户密码 数据库名` 进入mongodb,
    
执行 use database 切换到 database 数据库,
执行 db.createUser({user:"账户名",pwd:"密码",roles:[{role:"用户权限",db:"数据库"}]}) 进行用户的添加
执行 db.auth('账户名', '密码') 进行用户的认证

注:上面的database为新用户绑定的数据库

2.2 用户修改
密码修改(当前数据库)
db.changeUserPassword('用户名', '新密码')
db.updateUser("用户名", {pwd: "新密码"})

密码及用户信息修改(当前数据库)
db.runCommand({updateUser:"用户名",pwd:"新密码",customData:{name:"姓名",...}})
2.3 用户删除 (当前数据库)
db.dropUser('用户名')                           # 删除指定用户
db.system.users.remove({user:"用户名"});        # 删除指定用户名的所有用户
2.4 用户查询
show users      # 查询当前数据库所有用户
db.system.users.find()      # 查询当前所有用户
db.runCommand({usersInfo:"用户名"})     # 查询当前数据库指定用户

注:所有当前数据库的都需要 use 数据库名 切换后操作

普通用户连接mongo实例:mongo mongodb://用户名:密码@IP:端口/数据库

3. 权限管理

3.1 修改权限
db.updateUser("用户名",{roles:[ {role:"用户权限",db:"数据库"}, ...]})
3.2 删除权限
db.revokeRolesFromUser("用户名",[ {role:"用户权限", db:"数据库"} ])

用户权限如下:

内建角色:
   数据库用户角色:    read、readWrite;
   数据库管理角色:    dbAdmin、dbOwner、userAdmin;
   集群管理角色:      clusterAdmin、clusterManager、clusterMonitor、hostManager;
   备份恢复角色:      backup、restore;
   所有数据库角色:    readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
   超级用户角色:      root;  这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
   内部角色:          __system;
角色说明:
   Read:                  允许用户读取指定数据库
   readWrite:             允许用户读写指定数据库
   dbAdmin:               允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
   userAdmin:             允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
   dbOwner:               允许在当前DB中执行任意操作
   readAnyDatabase:       赋予用户所有数据库的读权限,只在admin数据库中可用
   readWriteAnyDatabase:  赋予用户所有数据库的读写权限,只在admin数据库中可用
   userAdminAnyDatabase:  赋予用户所有数据库管理User的权限,只在admin数据库中可用
   dbAdminAnyDatabase:    赋予管理所有数据库的权限,只在admin数据库中可用
   root:                  超级账号,超级权限,只在admin数据库中可用。
集群管理角色:
   clusterAdmin:      赋予管理集群的最高权限,只在admin数据库中可用
   clusterManager:    赋予管理和监控集群的权限
   clusterMonitor:    赋予监控集群的权限,对监控工具具有readonly的权限
   hostManager:       赋予管理Server
posted @ 2023-04-14 16:20  烟墨  阅读(26)  评论(0)    收藏  举报