Docker 安装启动 mongodb

7/15/2022 docker

# 容器配置文件 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

其他配置请参照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

# 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

# mongodb 中的数据库角色

  1. 数据库用户角色:read、readWrite
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 备份恢复角色:backup、restore
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
Last Updated: 11/2/2022, 9:49:00 AM