一、mongoDB用户角色配置
MongoDB基本的角色
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
//这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。
二、docker 部署mongo步骤
1、查看可用的 MongoDB 版本:docker search mongo
2、取最新版的 MongoDB 镜像:docker pull mongo:latest
3、查看本地镜像: docker images
4、运行容器:docker run -itd --name mongo -p 27017:27017 mongo --auth
(ps:加了--auth 则连接mongo的时候要权限认证)
三、给数据库添加用户权限
1、给admin数据库添加用户权限:
docker exec -it mongo mongo admin
>db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
"readWriteAnyDatabase"
]
}
注:添加完用户后可以使用show users或db.system.users.find()查看已有用户
2、退出mongo客户端
>exit
3、连接admin数据库,然后切换到其它数据库,并给其它数据库(这里是first_website)添加用户权限,用户都跟着库走
docker exec -it mongo mongo admin -u admin -p
Enter password:123456
>use first_website
>db.createUser({user: "root",pwd: "123456",roles: [{ role: "readWrite", db: "first_website" }]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "readWrite",
"db" : "first_website"
}
]
}
4 、再次退出mongo客户端
>exit
5 、连接mongo的first_website数据库
docker exec -it mongo mongo first_website -u root -p
Enter password:123456