jfgdf 发表于 2017-3-13 14:24:08

MongoDB用户及权限管理(二):用户管理

一、创建管理员账号

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

> use adminswitched 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 dbs2017-01-10T19:30:30.924+0800 E QUERY    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 dbsadmin0.000GBlocal0.000GB
即可执行成功。
二、创建普通用户账号userAdminAnyDatabase的角色具有在任何数据库下创建用户的权限,下面用刚刚创建的dba用户创建普通用户。1.创建只读账号
use db1db.createUser({      user:"test1",      pwd:"test1",       roles: [ { role: "read", db: "db1" } ]})
2.创建读写账号
use db1db.createUser({      user:"test2",      pwd:"test2",       roles: [ { role: "readWrite", db: "db1" } ]})
注意:只有在当前库下创建的用户才能在当前库下进行验证,如果在admin库下创建的其他库的用户则需要在admin下进行验证。
三、创建超级管理员用户MongoDB在V3.0版本之后内置了root 角色,也就是结合了readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin4个角色权限,类似于ORACLE的sysdba角色,但是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用户的readWrite和read admin的权限。db.revokeRolesFromUser(   "test1",    [ {role: "read", db: "admin" },         "readWrite")
页: [1]
查看完整版本: MongoDB用户及权限管理(二):用户管理