• mongodb 用户权限管理配置


    mongodb 权限字段详情

    • user 字段,为新用户的名字;
    • pwd 字段,用户的密码;
    • cusomData 字段,为任意内容,例如可以为用户全名介绍;
    • 超级用户的 role 有两种,userAdmin 或者 userAdminAnyDatabase (比前一种多加了对所有数据库的访问,仅仅是访问而已)。
    • db 是指定数据库的名字,admin 是管理数据库。
    • 不能用 admin 数据库中的用户登录其他数据库。注:只能查看当前数据库中的用户,哪怕当前数据库 admin 数据库,也只能查看 admin 数据库中创建的用户。
    • roles 字段,指定用户的角色,可以用一个空数组给新用户设定空角色。在 roles 字段,可以指定内置角色和用户定义的角色。

    role可选值:

    • 数据库用户角色:read、readWrite;
    • 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    • 备份恢复角色:backup、restore;
    • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    • 超级用户角色:root
    • 内部角色:__system,间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    role具体角色 权限说明
    Read 允许用户读取指定数据库
    readWrite 允许用户读写指定数据库
    dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root 只在admin数据库中可用。超级账号,超级权限

    创建 admin 超级管理员用户

    指定用户的角色和数据库:
    此时添加的用户都只用于 admin 数据库,而非你存储业务数据的数据库
    (在cmd中敲多行代码时,直接敲回车换行,最后以分号首尾)

    db.createUser(  
      { user: "admin",  
        customData:{description:"superuser"},
        pwd: "admin",  
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  
      }  
    )  
    

    创建一个不受访问限制的超级用户

    root 角色:不仅可以授权、也可对集合进行任何操作,但不建议直接使用

    db.createUser(
        {
            user:"root",
            pwd:"pwd",
            roles:["root"]
        }
    )
    

    创建一个业务数据库管理员用户

    > db.createUser({
        user:"user001",
        pwd:"123456",
        customData:{
            name:'jim',
            email:'jim@qq.com',
            age:18,
        },
        roles:[
            {role:"readWrite",db:"db001"},
            {role:"readWrite",db:"db002"},
            'read'// 对其他数据库有只读权限,对db001、db002是读写权限
        ]
    })
    

    查看创建的用户

    show users 
    
    db.system.users.find() 
    
    db.runCommand({usersInfo:"userName"})
    

    修改密码

    use admin
    db.changeUserPassword("username", "xxx")
    

    修改密码和用户信息

    db.runCommand(
        {
            updateUser:"username",
            pwd:"xxx",
            customData:{title:"xxx"}
        }
    )
    

    删除数据库用户

    use admin
    db.dropUser('user001')
    

    创建其他数据管理员

    // 登录管理员用户
    use admin
    db.auth('admin','admin')
    // 切换至db001数据库
    use db001
    // ... 増查改删该数据库专有用户
    
  • 相关阅读:
    KVM 重命名虚机
    甲醛了解
    递归函数,匿名函数
    函数
    zabbix监控URL
    zabbix自动发现
    vim常用命令总结
    saltstack常用命令
    zabbix监控Apache
    nginx配置详解
  • 原文地址:https://www.cnblogs.com/niuben/p/16651305.html
Copyright © 2020-2023  润新知