zoukankan      html  css  js  c++  java
  • MongoDB 用户及权限增删

    本文主要是MongoDB4.X的操作

    一、MongoDB用户创建

     

    MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问。 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作。 用户应该只有最小权限集才能确保最小权限的系统。
    MongoDB系统的每个应用程序和用户都应该映射到不同的用户。 这种访问隔离便于访问撤销和持续的用户维护。
    1.创建管理员用户
    要在MongoDB部署中创建用户,请连接到部署,然后使用db.createUser()方法或createUser命令添加用户。

    rs0:PRIMARY> db.createUser(
    ... {
    ... user:"test",
    ... pwd:"123456",
    ... roles:[{role:"root",db:"admin"}]
    ... }
    ... )
    Successfully added user: {
    "user" : "test",
    "roles" : [
    {
    "role" : "root",
    "db" : "admin"
    }
    ]
    }

    查看全部用户用db.getUsers();

    2.添加并验证用户

    use admin

    db.addUser(“abc”,”123456”)

    db.auth(“abc”,”123456”)

    3.查看已存在的用户

    db.system.users.find()

    db.getUsers();

    4.查看用户信息

    > use admin

    > db.getUser("用户名", { showPrivileges: true })

    > db.getSiblingDB("admin").runCommand(

      {

        usersInfo: "root",

         showPrivileges: true

         }

    )

    5.添加数据库用户
    创建指定数据库的用户,该用户只能访问该数据库。也可以为此数据库上的用户指定访问级别。 例如,创建一个在data数据库上具有读写访问权限的用户帐户。

    > use data

    > db.createUser( { user: "user01", pwd: "123456", roles: ["readWrite"] } )

    db.getSiblingDB("admin").runCommand( { createUser: "user02", pwd: "123456", customData: { info: "user for user02" }, roles: ["readWrite"] } )

    身份验证使用db.auth('用户名','密码');

     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数据库中可用。超级账号,超级权限
    复制代码
     
     
    6.添加多数据库用户
    
    

    db.createUser(
    {
    user: "fyerp",
    pwd: "test.123",
    roles:
    [{ role: "readWrite", db: "item" },{ role: "readWrite", db: "local" },{ role: "readWrite", db: "logdb" }]
    }
    )

    7.为用户添加角色

    用户user02添加admin数据库的readWrite角色

    > use admin

    > db.grantRolesToUser( "user02", [ { role: "readWrite", db: "admin" }, { role: "user02", db: "admin" } ] )

    > use admin

    > db.runCommand( { grantRolesToUser: "user02", roles: [ { role: "readWrite", db: "admin" }, { role: "user02", db: "admin" } ] } )

    8.更新用户信息

    更新用户user02具有admin数据库readWrite角色为read角色。

    > use admin

    > db.updateUser( "user02", { customData: { info: "user for user02" }, roles: [ { role: "user02", db: "admin" }, { role: "read", db: "admin" } ] } )

    > use admin

    > db.runCommand( { updateUser: "user02", customData: { info: "user for user02" }, roles: [ { role: "user02", db: "admin" }, { role: "read", db: "admin" } ] } )

    9.为用户回收角色

    > use admin

    > db.revokeRolesFromUser( "dbabd_user", [ { role: "read", db: "admin" } ] )

    > use admin

    > db.runCommand( { revokeRolesFromUser: "dbabd_user", roles: [ { role: "read", db: "admin" } ] } )

    10.更改用户密码

    更改用户dbabd_user密码为dbabdnew。

    > use admin

    > db.changeUserPassword("dbabd_user", "dbabdnew")

    11.删除用户

    删除用户dbabd_user

    > use admin

    > db.dropUser("dbabd_user")

    > use admin

    > db.runCommand({ dropUser: "user02" })

    关于更多用户管理操作信息可以参考官方文档说明:

    https://docs.mongodb.com/manual/reference/method/js-user-management/

  • 相关阅读:
    Get-CrmSetting返回Unable to connect to the remote server的解决办法
    Dynamics 365中的常用Associate和Disassociate消息汇总
    Dynamics 365 Customer Engagement V9 活动源功能报错的解决方法
    Dynamics Customer Engagement V9版本配置面向Internet的部署时候下一步按钮不可点击的解决办法
    Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录
    注意,更改团队所属业务部门用Update消息无效!
    Dynamics 365的审核日志分区删除超时报错怎么办?
    Dynamics 365使用Execute Multiple Request删除系统作业实体记录
    Dynamics 365的系统作业实体记录增长太快怎么回事?
    Dynamics CRM日期字段查询使用时分秒的方法
  • 原文地址:https://www.cnblogs.com/zhm1985/p/13405452.html
Copyright © 2011-2022 走看看