mongo
use admin
指定用户的角色和数据库:
(注意此时添加的用户都只用于admin数据库,而非你存储业务数据的数据库)
(在cmd中敲多行代码时,直接敲回车换行,最后以分号首尾)
db.createUser( { user: "admin", customData:{description:"superuser"}, pwd: "admin", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
user字段,为新用户的名字;
pwd字段,用户的密码;
cusomData字段,为任意内容,例如能够为用户全名介绍;
roles字段,指定用户的角色,能够用一个空数组给新用户设定空角色。在roles字段,能够指定内置角色和用户定义的角色。
超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对全部数据库的访问,仅仅是访问而已)。
db是指定数据库的名字,admin是管理数据库。
不能用admin数据库中的用户登陆其余数据库。注:只能查看当前数据库中的用户,哪怕当前数据库admin数据库,也只能查看admin数据库中建立的用户。
(跳出三界以外,不在五行之中)
db.createUser( { user:"root", pwd:"pwd", roles:["root"] } )
(只负责某一个或几个数据库的増查改删)
> db.createUser({ user:"user001", pwd:"123456", customData:{ name:'jim', email:'jim@qq.com', age:18, }, roles:[ {role:"readWrite",db:"db001"}, {role:"readWrite",db:"db002"}, 'read'// 对其余数据库有只读权限,对db00一、db002是读写权限 ] })
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
- 备份恢复角色:backup、restore;
- 全部数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
- 内部角色:__system
- Read:容许用户读取指定数据库
- readWrite:容许用户读写指定数据库
- dbAdmin:容许用户在指定数据库中执行管理函数,如索引建立、删除,查看统计或访问system.profile
- userAdmin:容许用户向system.users集合写入,能够在指定数据库里建立、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户全部分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户全部数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级帐号,超级权限
show users 或 db.system.users.find() 或 db.runCommand({usersInfo:"userName"})
use admin db.changeUserPassword("username", "xxx")
db.runCommand( { updateUser:"username", pwd:"xxx", customData:{title:"xxx"} } )
use admin db.dropUser('user001')
// 登陆管理员用户 use admin db.auth('admin','admin') // 切换至db001数据库 use db001 // ... 増查改删该数据库专有用户
启用权限验证(别TM的武装了大半天,大门还一直开着,还抱怨我方防护塔怎么一直被摧毁)
mongo --auth
或者修改mongo.conf,最后一行添加mongodb
#启用权限访问 auth=true
net stop mongodb; net start mongodb;
- 和用户管理相关的操做基本都要在admin数据库下运行,要先use admin;
- 若是在某个单一的数据库下,那只能对当前数据库的权限进行操做;
- db.addUser是老版本的操做,如今版本也还能继续使用,建立出来的user是带有root role的超级管理员。