千家信息网

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

发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,一、创建管理员账号下面开始创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。> use adminsw
千家信息网最后更新 2024年12月04日MongoDB用户及权限管理(二):用户管理


一、创建管理员账号

  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"

]

)


0