MongoDB权限管理
Contents
最近工作中用到MongoDB的权限管理,简单记录一下涉及到的知识。
Mongo的账号权限管理是基于角色的,建立账号并赋予角色是基本操作,账号属于库。
账号有分为超级权限和普通权限,超级权限用来管理账号角色,普通权限就是实际操作数据的账号。
MongoDB默认不需要账号登录,不存在初始账号,如果要启用账号认证,需要先建超级权限账号。
1 | ubuntu@wx-dev-com:~$ mongo |
创建一个超级权限,包含集群admin权限:
1 | db.createUser({ |
然后使用 auth 参数启动mongoDB就可以启用账号认证,可以直接在命令行加 –auth
或者写配置文件
1 | sudo /usr/bin/mongod --config /etc/mongodb.conf --auth |
普通账号添加的语法也一样,role使用 readWrite
1 | db.createUser({ |
添加成功后可以使用auth命令认证
0:代表授权失败
1:代表授权成功
1 | db.auth("pointuser","j1234") |
可以对一个账号赋予读写其他库的权限:
1 | db.grantRolesToUser( "pointuser" , [ { role: "readWrite", db: "mc" } ]) |
撤销对某个库的读写权限:
1 | db.revokeRolesFromUser( "pointuser" , [ { role: "readWrite", db: "mc" } ]) |
除了db.createUser(),下面几个函数也是常用的:
- 获得数据库的所有用户权限信息:db.getUsers()
- 获得某个用户的权限信息:db.getUser()
- 创建角色: db.createRole()
- 更新角色:db.updateRole()
- 删除角色:db.dropRole()
- 获得某个角色信息:db.getRole()
- 删除用户:db.dropUser()
- 删除所有用户:db.dropAllUsers()
- 将一个角色赋予给用户:db.grantRolesToUser()
- 撤销某个用户的某个角色权限:db.revokeRolesFromUser()
- 更改密码:db.changeUserPassword()