# 容器配置文件 mongo.conf
# 系统日志存放方式
systemLog:
destination: file
# 日志可通过docker文件映射到外部资源
path: /var/log/mongodb/mongod.log
logAppend: true
storage:
# 数据库文件存放路径,建议通过docker文件映射
dbPath: /data/db
net:
# 端口
port: 27017
# 允许局域网访问
bindIp: 0.0.0.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
其他配置请参照mongo 官网 (opens new window)
# 1. 拉取镜像
> docker pull mongodb:latest
1
# 2. 启动镜像
// 删除已有镜像
~: docker stop [containerName] && docker rm [containerName]
// 启动镜像
~: docker run -p 27017:27017 \
--name [containerName] \
-v [path]/mongo/db:/data/db \
-v [path]/mongo/mongo.conf:/data/configdb/mongo.conf \
-e TZ=Asia/Shanghai \
-d mongo -f /data/configdb/mongo.conf
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 3.配置 mongo
~: docker exet -it [containerName] mongo
> use admin
switched to db admin
> show users
// 如果有默认账户,需要删除,默认是无数据的
> db.dropUser("root")
// 创建用户
> db.createUser({user: 'username', pwd: 'password', roles: [{role: 'root', db: 'admin'}]})
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
// 针对单个数据库配置角色权限
> db.auth("username", "password")
1
> use testdb
switched to db testdb
> db.createUser({user: "user1", pwd: "pwd", roles:[{role: "dbOwner", db:"testdb"}]})
Successfully added user: {
"user" : "user1",
"roles" : [
{
"role" : "dbOwner",
"db" : "testdb"
}
]
}
> db.auth("user1", "pwd")
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# mongodb 中的数据库角色
- 数据库用户角色:read、readWrite
- 数据库管理角色:dbAdmin、dbOwner、userAdmin
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
- 备份恢复角色:backup、restore
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root