Mongodb用户权限管理

  • A+
所属分类:MongoDB

创建管理员账号

mongo账号和库绑定,当前库创建的用户,只能在当前库验证。

> use admin
switched to db admin

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

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

security:
    authorization: enabled

重启mongo 重新登陆

#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"
}

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

>use admin
>db.auth('dba','dba')
1

验证成功,再次执行命令,查看成功

> show dbs
admin  0.000GB
local  0.000GB

创建普通账号

创建只读账号

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

创建读写账号

db.createUser(
  {
      user:  "test2",
      pwd:  "testpasswd",
      roles: [ { role: "readWrite", db: "testdb2" } ]
  }
)

注意:只有在当前库下创建的用户才能在当前库下进行验证,比如test用户,只能在testdb验证

创建超级管理员用户

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

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

查看用户信息

> use test
> db.getUser("test1")
> show users

修改用户信息

可修改用户的如下信息:

角色、密码、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用户的readWrite和read admin的权限

db.revokeRolesFromUser(
     "test1",
    [ {  role: "read", db: "admin" },
           "readWrite"
         ]
)
YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: