mongodb2.6以后版本管理用户
添加用户:
./mongo use admin db.createUser({user:’admin’,pwd:’admin123′,roles:['userAdminAnyDatabase','dbAdminAnyDatabase']})
//创建一个能管理所有数据库的账户root/root
在哪个数据库下,添加的用户就是在哪个数据库下。
可以参考本文档下方的内置角色名称,在线上环境,不同场景的操作最好使用相应的角色,以免权限滥用。
修改用户权限。
db.grantRolesToUser(“username”,[ "readWrite" , { role: "read", db: "stock" } ])
mongod启动的时候加上 –auth 就可以添加用户验证功能。或者在启动配置文件里加上 auth=true 配置。
./mongod –-auth –-dbpath XXX –-logpath XXX –fork ./mongod -f /xx/mongo.cnf
有意思的是,创建用户后,登录时,必须指定数据库名、用户名、密码才能登录。
./mongo admin -u admin -p admin123
而且,如果创建的用户对其他数据库比如 abcdb 拥有读取或者其他权限,但是该用户是在admin数据库下建立的,依然不能登录,会报权限不够。
PS:登录时,指定的数据库名 和 使用的用户 必须是同一个数据库下才行。//不明白为什么这个搞,没有深究,都有相应的权限了,还不能登录,觉得这样设计真坑……
下方是官方2.6版本db的user操作文档:addUser() 操作已经被置为 弃用,但依然可以使用,会提示。使用新的操作API:createUser()。
官网文档地址:
常用权限:http://docs.mongodb.org/master/reference/built-in-roles/#database-administration-roles
role 管理:http://docs.mongodb.org/master/reference/method/js-role-management/
用户管理:http://docs.mongodb.org/master/reference/method/js-user-management/
下方列出系统内置角色名称:
Database User Roles 普通用户角色
read
readWrite
Database Administration Roles 管理员角色
dbAdmin 可以管理数据库
dbOwner 单数据库最大权限,dbAdmin,userAdmin
userAdmin 可管理当前数据库用户
Cluster Administration Roles 管理员角色
clusterAdmin
clusterManager
clusterMonitor
hostManager
Backup and Restoration Roles 备份和恢复角色
backup
restore
All-Database Roles 所有数据库角色
readAnyDatabase 在admin下建立,可以读取所有数据库的信息
readWriteAnyDatabase 在admin下建立,可以读写所有数据库的信息
userAdminAnyDatabase 在admin下建立,可以管理所有数据库的用户
dbAdminAnyDatabase 在admin下建立,可以管理所有数据库的信息(类似于所有数据库的dbAdmin账户)
Superuser Roles (没搞明白...)
root
转自:http://www.wangboak.com/2014/11/mongodb2-6-createuser/