MongoDB用户管理授权

1 角色类型

  1. 数据库用户角色:read、readWrite
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 备份恢复角色:backup、restore
  5. 所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
    dbAdminAnyDatabase
  6. 超级用户角色:root

2 注意事项

授权常见的模式分两种

  • 指定单个数据库给用户授权,此时需要先切换到指定数据库名称空间下,以test为例,use test,然后进行相关的授权grantRolesToUser。新创建用户时,以rsq用户为例,需要在test数据库中进行用户的创建,注意rsq跟其它数据库的用户不通用,如果需要在test2数据库中给rsq用户授权,则需要在test2中也创建rsq用户。此时mongo连接串需要指定相对应的数据库才可以登录,否则会报认证失败。
  • 指定多个数据库给一个用户授权,这种情况需要切换到admin数据库中,先对用户进行admin数据库的权限授权,如dbAdmin,授权完再给普通数据库授权,这种情况不需要再进入到普通数据库创建用户,用户是全局生效的。此时mongo连接串不需要指定具体的数据库名称也可以登录

3 给单个数据库授权

连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false&authSource=test1

# 新建数据库
use test1

# 新建一个测试collection
# 默认一个db中没有collection,show dbs是看不到这个数据库的
db.site.insert({"name":"test1"})

# 查看数据库
show dbs

# 给新数据库创建用户,密码跟之前保持一致
db.createUser({user: "test",pwd: "xxxxx",roles: [ { role: "dbOwner",db: "test1" } ]})

# 如果需要角色授权,则有如下命令
db.runCommand(
    {
        grantRolesToUser: "test",roles:
            [
                { role: "dbAdminAnyDatabase",db: "admin" }
            ]
    }
)

4 给一个用户授权多个数据库

连接串:mongodb://test:xxxxx@mongo.rsq.cn:27017/?tls=false

# 需要进入到admin数据库授权多个数据库给同一个用户
use admin

# 创建用户
db.createUser({
    user: "test",roles: [
        { 
            role: "dbAdmin",db: "admin" 
        },{ 
            role: "dbOwner",db: "test1" 
        },db: "test2" 
        },db: "test3" 
        }
    ]
})

5 其它命令

# 查看db相关权限
db.runCommand(
    {
        rolesInfo: { role: "readWrite",db: "" },showPrivileges: true
    }
)

# 查询用户
db.getUsers();
show users

# 删除用户
db.dropUser('admin')

# 修改用户密码
db.updateUser('admin',{pwd: '111111'})

# 创建管理员用户,需要使用admin数据库
use admin  
db.createUser({user: "test",roles: [ { role: "dbAdmin",db: "test" } ]})

# 回收用户角色
db.revokeRolesFromUser(
    "test",[
        { role: "root",db: "admin" }
    ]
)

# 删除数据库
use percepai-cowa3d-corolla-v56tion
db.dropDatabase()

相关文章

文章浏览阅读752次。关系型数据库关系型数据库是一个结构化的...
文章浏览阅读687次,点赞2次,收藏5次。商城系统中,抢购和秒...
文章浏览阅读1.4k次。MongoTemplate开发spring-data-mongodb...
文章浏览阅读887次,点赞10次,收藏19次。1.背景介绍1. 背景...
文章浏览阅读819次。MongoDB连接失败记录_edentialmechanisn...
文章浏览阅读470次。mongodb抽取数据到ES,使用ELK内部插件无...