zoukankan      html  css  js  c++  java
  • MongoDB入门系列(四):权限管理

    一、概述

    本篇文章主要介绍如何创建用户和角色相关概念,同时对角色的添加和删除做了相关介绍。

    版本:3.6.2

    二、角色相关概念

    1.数据库用户角色

    read:该角色拥有数据的只读权限,系统集合以及system.indexes,system.js,system.namespaces集合除外。

    readWrite:该角色拥有对应数据库的读写权限,系统集合和system.js集合除外。

    2.数据库管理角色

    dbAdmin:该角色拥有指定数据库数据库管理权限,包括 system.indexes, system.namespaces, system.profile集合的操作权限。该角色不拥有所有非系统集合的读权限。

    dbOwner:该角色拥有指定数据库的所有权限,该角色包括:readWrite、dbAdmin、userAdmin。

    userAdmin:该角色拥有指定数据库用户和角色的管理权限。包括创建用户等。

    3.群集管理角色

    clusterAdmin:该角色拥有群集的所有权限。该角色包含clusterManager,clusterMonitor,hostManager 角色权限。同时还要删除数据库的权限。

    clusterManager:该角色拥有群集的管理和监控权限,包括对local、config数据库的访问权限。同时该角色拥有分片和复制集的管理权限。

    clusterMonitor:该角色拥有群集的监控权限。

    hostManager:该角色拥有群集的监控和服务管理权限。

    注意:这些角色只能在Admin数据库下创建

    4.备份还原角色

    backup:该角色拥有备份数据的权限。

    restore:该角色拥有还原备份数据的权限。

    注意:这些角色只能在Admin数据库下创建

    5.所有数据库角色

    该分类下面的角色权限和数据库角色权限一样,区别在于它拥有的是所有数据库的权限而不是指定数据库下的权限。但是不拥有system.*相关集合、local、config数据库的权限。

    readAnyDatabase

    readWriteAnyDatabase

    userAdminAnyDatabase

    dbAdminAnyDatabase

    注意:这些角色只能在Admin数据库下创建

    6.超级权限角色

    root:该角色拥有所有权限,该角色包含readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin roles, restore, and backup角色。

    注意:该角色只能在创建在Admin库中

    7.内部角色 

    __system:该角色为系统内部角色,比如复制集成员、mongos使用。

    三、创建用户

    1.创建用户

    在admin中创建root角色用户

    use admin;
    db.createUser({
    user:"dba", pwd:"dba", roles:[{role:"root",db:"admin"}]});

    2.删除用户

    use到具体的数据库下面去执行dropUser命令

    use test;
    db.dropUser("test");

    注意:创建和删除用户都要在对应的数据库下。

    四、向用户添加和删除角色

    1.创建只读用户

    切换到test数据库下创建read角色用户

    use test
    
    db.createUser(
    {
        user:"test",
        pwd:"test",
        roles:[{role:"read",db:"test"}     
            ]
    }
    );

    2.验证权限

    提示没有权限插入集合。

    3.修改用户权限

    update命令会替换原有的权限

    ----更新用户权限
    db.updateUser( "abc",
    {
    roles:[
             { role : "readWrite", db : "abc"  }
          ]
    }
    );

    如果是增加权限和回收权限使用以下命令:

    增加权限

    db.grantRolesToUser( "<username>", [ <roles> ], { <writeConcern> } )

    The grantRolesToUser method takes the following arguments:

    ParameterTypeDescription
    user string The name of the user to whom to grant roles.
    roles array An array of additional roles to grant to the user.
    writeConcern document Optional. The level of write concern for the modification. The writeConcerndocument takes the same fields as the getLastError command.
    db.grantRolesToUser("usertest", [{role:"readWrite", db:"testDB"},{role:"read", db:"testDB"}])

    回收权限

    db.revokeRolesFromUser( "<username>", [ <roles> ], { <writeConcern> } )

    The revokeRolesFromUser method takes the following arguments:

    ParameterTypeDescription
    user string The name of the user from whom to revoke roles.
    roles array The roles to remove from the user.
    writeConcern document Optional. The level of write concern for the modification. The writeConcerndocument takes the same fields as the getLastError command.

    五、密码管理 

     1.修改密码

    db.updateUser(
       "root",
       {
          pwd: "abc"
       }
    )

    备注:

        作者:pursuer.chen

        博客:http://www.cnblogs.com/chenmh

    本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

    《欢迎交流讨论》

  • 相关阅读:
    IT职业发展核心能力养成
    想学java的朋友们 可以来听公开课
    自学h5 来看看项目常见问题汇总及解决方案
    精准定位适合自己的工作——职业素养免费公益课
    自学前端的小伙伴们开过来 本周公益干货分享课
    java学习项目案例分享视频资源地址
    自学前端的小伙伴看过来 jQuery五角星评分小效果
    美观大气的纯JS做出黑客帝国特效 初学前端进来看
    java项目开发-大神案例分享:京东京豆项目06
    【签到有礼】课工场5月,签到的日子,春暖花开
  • 原文地址:https://www.cnblogs.com/chenmh/p/8487150.html
Copyright © 2011-2022 走看看