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/

  • 相关阅读:
    hdu 5001 从任意点出发任意走d步不经过某点概率
    hdu 5007
    hdu 5009 离散化
    hdu 5011 Nim+拿完分堆
    thinkphp 删除多条记录
    thinkphp 实现无限极分类
    图片生成唯一的名字
    html 标签学习
    PHP比较运算!=和!==
    php使用 set_include_path
  • 原文地址:https://www.cnblogs.com/zhm1985/p/13405452.html
Copyright © 2011-2022 走看看