• mongodb用户管理


    修改用户密码

    要修改用户密码,要求用户具有changePassword或changeOwnPassword的权限,有以下两种方式用来修改用户密码:
    db.changeUserPassword(<user_name>,<new_password>)
    db.updateUser(<user_name>,{update_object})

    db.changeUserPassword()示例:

    admin@undefined$ db.auth("root","admin")
    1

    admin@undefined$ db.changeUserPassword("root","123456")

    admin@undefined$ db.auth("root","admin")
    Error: Authentication failed.
    0
    admin@undefined$ db.auth("root","123456")
    1
    admin@undefined$ show dbs
    admin  0.000GB
    local  0.000GB
    test   0.000GB
    test1  0.000GB

    可以看到在修改root用户的密码后,原来的密码验证就失败了,但是当前这个会话还是可以正常执行操作,新会话则需要用修改后的密码进行验证

    db.updateUser()示例:

    admin@undefined$ db.auth("root","123456")
    1

    admin@undefined$ db.updateUser("root",{pwd:"admin123"})

    admin@undefined$ db.auth("root","admin123")
    1
    admin@undefined$ db.auth("root","123456")
    Error: Authentication failed.
    0

    删除用户

    删除test用户
    > db.dropUser("test")
    true
     
    确认test用户是否存在
    > db.getUser("test")
    null
     
    删除所有用户
    > db.dropAllUsers()
    2

    修改用户权限(角色)

    修改用户权限

    db.updateUser("readtest",{"roles":[{role:"readWrite",db:"test"}]})

    添加用户权限(切换到有权限操作的数据库下)

    db.grantRolesToUser('lianguser8',[{role:'readWrite',db:'jundb'}])

    移除用户权限(切换到有权限操作的数据库下)

    db.revokeRolesFromUser('lianguser8',[{role:'readWrite',db:'jundb'}])


    2.4之后的版本用户管理

    添加管理员账号

    > use admin;

    switched to db admin

    > db.createUser({user:"admin",pwd:"oracle",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

    Successfully added user: {

        "user" : "admin",

        "roles" : [

            {

                "role" : "userAdminAnyDatabase",

                "db" : "admin"

            }

        ]

    }

    > show users;

    {

        "_id" : "admin.admin",

        "user" : "admin",

        "db" : "admin",

        "roles" : [

            {

                "role" : "userAdminAnyDatabase",

                "db" : "admin"

            }

        ]

    }

    添加一个用户,有一个角色

    db.createUser({user:"backupuser",pwd:"oracle",roles:[{role:"backup","restore"],db:"admin"}]})

    添加一个用户有多个角色

    db.createUser({user:"backupuser",pwd:"oracle",roles:[{role:"backup",db:"admin"},{role:"restore",db:"admin"}]})

    开启权限验证

    用户在哪个库新建授权,则需要在哪个库进行auth验证,注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。    

    在配置文件 /mongodb.conf 添加如下参数。

    auth = true

    或者mongod 加上 --auth 参数

    mongod --auth

    然后重启数据库。

    验证权限是否生效

    mongo --port 33988

    MongoDB shell version: 3.2.14-8-g94ea659

    connecting to: 127.0.0.1:33988/test

    > show dbs;

    2017-08-28T10:53:39.639+0800 E QUERY [thread1] Error: listDatabases failed:{

        "ok" : 0,

        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",

        "code" : 13

    } :

    _getErrorWithCode@src/mongo/shell/utils.js:25:13

    Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1

    shellHelper.show@src/mongo/shell/utils.js:761:19

    shellHelper@src/mongo/shell/utils.js:651:15

    @(shellhelp2):1:1

    > use admin

    switched to db admin

    > db.auth('admin','oracle')

    1

    > show dbs;

    admin 0.000GB

    liangdb 0.000GB

    liangdb2 0.000GB

    local 0.000GB

    添加普通用户

    > use liangdb;

    switched to db liangdb

    > db.createUser({user:"lianguse",pwd:"oracle",roles:[{role:"readWrite",db:"liangdb"}]})

    Successfully added user: {

        "user" : "lianguse",

        "roles" : [

            {

                "role" : "readWrite",

                "db" : "liangdb"

            }

        ]

    }

    mongo --port 33988

    MongoDB shell version: 3.2.14-8-g94ea659

    connecting to: 127.0.0.1:33988/test

    > use liangdb;

    switched to db liangdb

    > db.auth('lianguse','oracle')

    1

    mongodb-修改用户密码

    use test

    db.changeUserPassword("test", "123456");

    mongodb-删除用户

    use test

    db.removeUser(用户名);

    2.4之前的版本用户管理
     

    创建某个数据库的管理用户

    进入liangdb数据库:

    >use liangdb;

    添加一个默认是拥有liangdb数据库所有权限用户

    > db.addUser("liangguojun","pwdliangguojun");

    {

        "user" : "liangguojun",

        "readOnly" : false,

        "pwd" : "d54fc4e6152a677246f0fe553acf3727",

        "_id" : ObjectId("599f8a86699fb913970b6ae3")

    }

    添加一个默认是拥有liangdb数据库只读权限权限用户

    > db.addUser("liangguojun2","pwdliangguojun",true);

    {

        "user" : "liangguojun2",

        "readOnly" : true,

        "pwd" : "2275424f3245aa522f223e17a29a22c9",

        "_id" : ObjectId("599f8abd699fb913970b6ae4")

    }

    查看一下所有的用户

    > db.system.users.find();

    或者

    > show users;

    show users命令只能查看当前数据库下的用户。

    删除用户

    > db.system.users.remove({user:"liangguojun"});

    或者

    > db.removeUser("liangguojun2");

    创建超级用户

    进入admin数据库

    >use admin

    在admin中创建的所有用户都是超级用户,可以操作任何的数据库

    >db.addUser("admin","admin");默认是拥有所有数据库所有权限

    >db.addUser("admin1","admin",true);拥有所有数据库的只读权限

     MongoDB数据库角色

    查看一个用户具有的权限和角色
    > db.getUser("lianguser")
    {
     "_id" : "jundb.lianguser",
     "user" : "lianguser",
     "db" : "jundb",
     "roles" : [
      {
       "role" : "dbOwner",
       "db" : "jundb"
      }
     ]
    }
     
    内建的角色
    数据库用户角色:read、readWrite;
    数据库管理员角色:dbAdmin、userAdmin、dbOwner;
    集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    备份恢复角色:backup、restore;
    所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    内部角色:__system
     
     
    MongoDB角色说明
    普通用户角色:
    Read:允许用户读取指定数据库。
    readWrite:允许用户读写指定数据库。
     
    管理员角色:
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户。
    dbOwner:单数据库最大权限(dbAdmin+userAdmin)。
     
    所有数据库角色:
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
     
    root:只在admin数据库中可用。超级账号,超级权限。


     

  • 相关阅读:
    统计学习及监督学习概论(2)
    推荐系统(1)
    统计学习及监督学习概论(1)
    JavaScript学习08 Cookie对象
    JavaScript学习07 内置对象
    JavaScript学习06 JS事件对象
    JavaScript学习05 定时器
    JavaScript学习04 对象
    JavaScript学习03 JS函数
    JavaScript学习02 基础语法
  • 原文地址:https://www.cnblogs.com/liang545621/p/7390927.html
Copyright © 2020-2023  润新知