MongoDB用户角色授权与AUTH启用

作者: 疯狂小兵 | 2016-04-18 | 阅读
「编辑」 「本文源码」

dbAdmin 在db范围内包括下面的权限:

  • collStats

  • dbHash

  • dbStats

  • find

  • killCursors

  • listIndexes

  • listCollections

  • dropCollection 和 createCollection on system.profile only

userAdmin在db范围内包括如下权限:

  • changeCustomData

  • changePassword

  • createRole

  • createUser

  • dropRole

  • dropUser

  • grantRole

  • revokeRole

  • viewRole

  • viewUser

    readAnyDatabase: 对所有数据库中的collection可读,同时包含listDatabases权限

    readWriteAnyDatabase:对所有数据库中的collection可读且可写,同时包含listDatabases权限

    userAdminAnyDatabase: 对所有数据库拥有userAdmin角色,同时包含listDatabases权限

    dbAdminAnyDatabase: 对所有数据库拥有dbAdmin角色,同时包含listDatabases权限

    cluster: clusterMonitor、hostManager、clusterManager、clusterAdmin

    root: 包含 readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase 和 clusterAdmin 等角色。 但不能访问system. 开头的collection(root does not include any access to collections that begin with the system. prefix.)

__system 超级角色

实例:

将json参数放入createUser方法中

1.创建mongo用户,角色为dbAdmin

db.createUser()
{
	user:"test1",
	pwd:"123456",
	roles:[
		{
			role:"dbAdmin",
			db:"test"
		}
	]
}

2.创建mongo用户,角色为userAdmin

db.createUser()
{
	user:"test2",
	pwd:"123456",
	roles:[
		{
			role:"userAdmin",
			db:"test"
		}
	]
}

3.创建mongo用户,角色为__system

当前验证只能用于admin库

db.createUser()
{
	user:"test4",
	pwd:"123456",
	roles:[
		{
			role:"__system",
			db:"admin"
		}
	]
}

4.创建mongo用户,角色为clusterAdmin

当前验证只能用于admin库

db.createUser()
{
	user:"test6",
	pwd:"123456",
	roles:[
		{
			role:"clusterAdmin",
			db:"admin"
		}
	]
}

5.创建mongo用户,角色为clusterManager

当前验证只能用于admin库

db.createUser()
{
	user:"test7",
	pwd:"123456",
	roles:[
		{ 
			role:"clusterManager",
			db:"test"
		}
	]
}

6.创建mongo用户,角色为hostManager

当前验证只能用于admin库

db.createUser()
{
	user:"test8",
	pwd:"123456",
	roles:[
		{
			role:"hostManager",
			db:"admin"
		}
	]
}

7.创建mongo用户,角色为clusterMonitor

当前验证只能用于admin库

db.createUser()
{
	user:"test9",
	pwd:"123456",
	roles:[
		{
			role:"clusterMonitor",
			db:"admin"
		}
	]
}

8.创建mongo用户,角色为userAdminAnyDatabase

当前验证只能用于admin库

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

9.创建mongo用户,角色为readAnyDatabase

当前验证只能用于admin库

db.createUser()
{
	user:"test11",
	pwd:"123456",
	roles:[
		{
			role:"readAnyDatabase",
			db:"admin"
		}
	]
}

10.创建mongo用户,角色为readWriteAnyDatabase

当前验证只能用于admin库

db.createUser()
{
	user:"test12",
	pwd:"123456",
	roles:[
		{
			role:"readWriteAnyDatabase",
			db:"admin"
		}
	]
}

11.创建mongo用户,角色为userAdminAnyDatabase

当前验证只能用于admin库

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

12.创建mongo用户,角色为dbAdminAnyDatabase

当前验证只能用于admin库

db.createUser()
{
	user:"test14",
	pwd:"123456",
	roles:[
		{
			role:"dbAdminAnyDatabase",
			db:"admin"
		}
	]
}

13.创建mongo用户,角色为root

当前验证只能用于admin库

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

14.创建mongo用户,角色为backup

当前验证只能用于admin库

db.createUser()
{
	user:"test16",
	pwd:"123456",
	roles:[
		{
			role:"backup",
			db:"admin"
		}
	]
}

15.创建mongo用户,角色为dbOwner

当前验证只能用于admin库

db.createUser()
{
	user:"test17",
	pwd:"123456",
	roles:[
		{
			role:"dbOwner",
			db:"admin"
		}
	]
}

16.创建mongo用户,角色为read

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

17.创建mongo用户,角色为readWrite

db.createUser()
{
	user:"test20",
	pwd:"123456",
	roles:[
		{
			role:"readWrite",
			db:"test"
		}
	]
}

18.创建mongo用户,角色为restore

当前验证只能用于admin库

db.createUser()
{
	user:"test21",
	pwd:"123456",
	roles:[
		{
			role:"restore",
			db:"admin"
		}
	]
}

19.创建mongo用户,角色为enableSharding

db.createUser()
{
	user:"test23",
	pwd:"123456",
	roles:[
		{
			role:"enableSharding",
			db:"test"
		}
	]
}

20.创建mongo用户,角色为enableSharding和root

即用户可以担任多个角色

db.createUser()
{
	user:"test24",
	pwd:"123456",
	roles:[
		{
			role:"root",
			db:"admin"
		},
		{
			role:"enableSharding",
			db:"test"
		}
	]
}

查看指定用户权限

需要管理员权限

db.runCommand( ```json
{
	usersInfo:"test2",
	showPrivileges:true
} ``` )

修改用户密码

需要管理员权限,并且要在用户所在的db中操作

use mydb
db.changeUserPassword("username", "xxx")

版权声明:本文由 在 2016年04月18日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《MongoDB用户角色授权与AUTH启用》




  相关文章:

「游客及非Github用户留言」:

「Github登录用户留言」:

TOP