- 发布于
MongoDB用户配置
- Authors
- Name
- 田中原
MongoDB用户配置
目录
当你的MongoDB数据库在本地使用时不需要账号密码没问题,但是当部署到服务器时是不能没有身份验证的。今天学习MongoDB用户配置,在此稍作记录。
MongoDB中的用户类型/user
常用MongDB的用户类型
- 超级管理员:拥有最高权限,可以对任何数据库进行任意操作
- 管理员用户:拥有当前数据库最高权限,可以对当前库进行任意操作
- 数据库用户:只拥有对当前数据库数据的读写权利
MongoDB中的角色/权限/role
创建用户的时候需要指定用户的对于某个数据库是什么角色
可以理解为对某个数据库的权限设置
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
用户相关的方法
#添加用户:
db.createUser({
user: "<name>", //用户名
pwd: "<cleartext password>",
customData: { <any information> }, //可选的,备注信息。
roles: [
{ role: "<role>", db: "<database>" } | "<role>", //指定角色
...
]},
writeConcern: { <write concern> }
)
#更改用户信息:将会覆盖掉原先的用户信息
root(
"<username>",
{
customData : { <any information> },
roles : [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
pwd: "<cleartext password>"
},
writeConcern: { <write concern> }
)
用户验证登陆的两种方式
注意点:验证的用户的时候,必须在该用户创建的数据库验证
mongod --auth
#开启验证
1 2 | mongod --auth #开启验证 |
1.连接数据库时验证
权限验证一定要在建立该账户的数据库上进行
mongo xx.xx.xx.xx:xxx/test -u "admin" -p "adminPass"
2. 连接之后再进行验证
mongo --port 27017
use admin
db.auth("admin", "adminPass")
实践
1.创建超级管理员用户
sudo mongod --logpath=./log/log.log # 启动mongoDB
mongo
#进入mongo shell
use admin
#切换到admin数据库
db.system.users.find()
#可以查看下admin下用户,默认应该是没有数据的
db.createUser({
user:'admin',
pwd:'adminPass',
roles:['root']
})
Successfully added user: { "user" : "admin", "roles" : [ "root" ] }
相关链接: MongoDB官网