创建目录

1
mkdir -p /mydata/mongodb/data/db /mydata/mongodb/data/log /mydata/mongodb/data/config

compose

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3.8'
services:
mongo:
container_name: mongo
image: mongo:5.0 # 可以修改为自己需要的版本
restart: always
ports:
- 27017:27017
volumes:
- /etc/localtime:/etc/localtime # 时区
- /mydata/mongodb/data/db:/data/db # 挂载数据目录
- /mydata/mongodb/data/log:/var/log/mongodb # 挂载日志目录
- /mydata/mongodb/data/config:/etc/mongo # 挂载配置目录

启动

1
docker-compose -f mongodb-compose.yaml up -d

配置用户和库

进入容器

1
docker exec -it mongo /bin/bash

root用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 登录
mongo admin
# 查看当前所在数据库,默认在admin数据库
use admin
# 创建root用户,本质:为root用户赋予userAdminAnyDatabase角色作用在admin数据库上,为root用户赋予readWriteAnyDatabase角色作用再所有数据库上
db.createUser(
{

user: 'root',
pwd: 'root_pwd',
roles: [ {
role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)

普通用户(自定义库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 登录
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 读写数据权限

作者声明

1
如有问题,欢迎指正!