准备
compose文件
- 创建mongodb-compose.yaml文件,复制下面内容到其中
version: '3.8'
services:
mongo:
container_name: mongo
image: mongo:5.0 # 可以修改为自己需要的版本
restart: always
ports:
- 27017:27017
volumes:
- /etc/localtime:/etc/localtime # 时区
- /srv/mongodb/data/db:/data/db # 挂载数据目录
- /srv/mongodb/data/log:/var/log/mongodb # 挂载日志目录
- /srv/mongodb/data/config:/etc/mongo # 挂载配置目录
volume卷
# 创建目录
sudo mkdir -p /srv/mongodb/data/db /srv/mongodb/data/log /srv/mongodb/data/config
运行compose文件
sudo docker-compose -f mongodb-compose.yaml up -d
配置
进入容器mongo内部
sudo docker exec -it mongo /bin/bash
权限配置
创建root用户
- 注意:创建root用户必须在admin数据库中进行
# 登录
mongo admin
# 查看当前所在数据库,默认在admin数据库
use admin
# 创建root用户,本质:为root用户赋予userAdminAnyDatabase角色作用在admin数据库上,为root用户赋予readWriteAnyDatabase角色作用再所有数据库上
db.createUser(
{
user: 'root',
pwd: 'root_pwd',
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
创建普通用户
# 登录
mongo admin
# 查看当前所在数据库,默认在admin数据库
use xcrj_db
# 创建root用户,本质:为xcrj用户赋予dbOwner角色作用在xcrj_db数据库上
db.createUser({ user:'xcrj_user',pwd:'xcrj_pwd',roles:[ { role:'dbOwner', db: 'xcrj_db'}]});
# 退出mongo
exit;
# 登录
mongo xcrj_db -u xcrj_user -p
# 查看当前db
db;
账户权限
角色名 | 权限 |
---|
root | 包含角色readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、restore和backup联合之后所有的权限。 |
dbOwner | 在当前db中执行任意操作 |
userAdmin | 用户管理,在当前db中管理user的权限 |
read | 只读数据权限 |
readWrite | 读写数据权限 |
作者声明