MongoDB用户及权限管理(二):用户管理
admin
2023-01-26 07:44:00
0


一、创建管理员账号

  1. 下面开始创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)

> use admin

switched to db admin

> db.createUser(

{

    user:  "dba",

    pwd:  "dba",

    roles:  [ { role: "userAdminAnyDatabase", db: "admin" } ]

}

)

2.编辑mongodb配置文件,开启验证模块

security:

    authorization: enabled

3.重启mongod.

4.再次登录mongodb

#mongo

> show dbs

2017-01-10T19:30:30.924+0800 E QUERY    [main] Error: listDatabases failed:{

         "ok" : 0,

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

         "code" : 13,

         "codeName" : "Unauthorized"

}

5.会报出如上错误,这是因为开启auth模块后,需要进行验证。如果需要使用刚才创建的管理员账户,则需要到admin库下进行验证,1表示验证成功。

>use admin

>db.auth('dba','dba')

1

6.验证成功,再次执行命令:

> show dbs

admin  0.000GB

local  0.000GB

即可执行成功。


二、创建普通用户账号

userAdminAnyDatabase的角色具有在任何数据库下创建用户的权限,下面用刚刚创建的dba用户创建普通用户。

1.创建只读账号

use db1

db.createUser(

  {

      user:  "test1",

      pwd:  "test1",

       roles: [ { role: "read", db: "db1" } ]

  }

)

2.创建读写账号

use db1

db.createUser(

  {

      user:  "test2",

      pwd:  "test2",

       roles: [ { role: "readWrite", db: "db1" } ]

  }

)

注意:只有在当前库下创建的用户才能在当前库下进行验证,如果在admin库下创建的其他库的用户则需要在admin下进行验证。


三、创建超级管理员用户

MongoDBV3.0版本之后内置了root 角色,也就是结合了readWriteAnyDatabasedbAdminAnyDatabaseuserAdminAnyDatabaseclusterAdmin4个角色权限,类似于ORACLEsysdba角色,但是MongoDB的超级管理员用户名称是可以随便定义的。当然如此高权限的用户还是不建议使用。

db.createUser(

  {

      user:  "dbroot",

      pwd:  "dbroot",

       roles: [ { role: "root", db: "admin" } ]

  }

)


四、查看用户信息

db.getUser("test1")

> db.getUser("test1")

{

         "_id" : "admin.test1",

         "user" : "test1",

         "db" : "admin",

        "roles" : [

                 {

                        "role" :  "clusterAdmin",

                        "db" :  "admin"

                 }

        ]

}


五、修改用户信息

可修改用户的如下信息:

角色、密码、customData

db.updateUser( "test1",

{

     customData:{employeeID:"0x3039"},

         roles:[

               {role:"read",db:"admin"}

         ],

     pwd:"test1password"

}

)


六、修改用户密码

db.changeUserPassword("user","password")


七、删除用户

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

db.dropUser("test1")


八、授权给用户

原有权限不变的情况下,授予readWrite,read admin的权限:

db.grantRolesToUser(

   "test1",

   [  "readWrite",

      {  role: "read", db: "admin" }

   ]

)

 

九、回收权限

回收test1用户的readWriteread admin的权限。

db.revokeRolesFromUser(

     "test1",

    [ {  role: "read", db: "admin" },

           "readWrite"

         ]

)


相关内容

热门资讯

终于明白“全民内蒙古麻将.有没... 您好:全民内蒙古麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这...
玩家攻略科普“来来淮北麻将.怎... 您好:来来淮北麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
【今日要闻】“飞鹰互娱牛牛.有... 网上科普关于“飞鹰互娱牛牛有没有挂”话题很是火热,小编也是针对飞鹰互娱牛牛作*弊开挂的方法以及开挂对...
终于明白“战皇炸金花.真的有挂... 终于明白“战皇炸金花.真的有挂吗?”其实是有挂您好,战皇炸金花这个游戏其实有挂的,确实是有挂的,需要...
今日重大通报“小乐红中麻将.究... 家人们!今天小编来为大家解答小乐红中麻将透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里...
【今日要闻】“同城跑胡子.到底... 您好:同城跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游...
最新引进“卡贝大厅.开挂器?”... 最新引进“卡贝大厅.开挂器?”确实真的有挂您好,卡贝大厅这个游戏其实有挂的,确实是有挂的,需要了解加...
我来教教您“欢聚水鱼.有挂吗?... 有 亲,根据资深记者爆料欢聚水鱼是可以开挂的,确实有挂(咨询软件无需打开...
【第一财经】“天府棋牌.辅助器... 网上科普关于“天府棋牌有没有挂”话题很是火热,小编也是针对天府棋牌作*弊开挂的方法以及开挂对应的知识...
【第一消息】“麻友圈2.真的有... 有 亲,根据资深记者爆料麻友圈2是可以开挂的,确实有挂(咨询软件无需打开...