mongo安装
# 拉取最新mongo镜像
docker pull mongo
# 创建数据文件存储地址,防止误删docker,数据被清
mkdir -p /mnt/docker-data/mongo/data/db
# 运行容器
docker run -itd --name mongo -p 27017:27017 -v /mnt/docker-data/mongo/data/db:/data/db mongo
# 直接进入容器,使用admin登录
## 6.0以上命令
docker exec -it mongo mongosh admin
## 6.0以下命令
docker exec -it mongo mongo admin
mongo操作
创建用户并授权
db.createUser({
user: "账号",
pwd: "账号密码",
roles: [{role: "角色权限编码", db: "数据库名"}]
})
-
- 数据库用户角色 read、readWrite
- 数据库管理角色 dbAdmin、dbOwner、userAdmin
- 集群管理角色 clusterAdmin、clusterManager、clusterMonitor、 hostManager
- 备份恢复角色 backup、restore
- 所有数据库角色 readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色 root
- 内部角色 __system
-
- Read 允许用户读取指定数据库
- readWrite 允许用户读写指定数据库
- dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root 只在admin数据库中可用。超级账号,超级权限
数据备份
# 进入容器
docker exec -it mongo /bin/bash
# 执行数据备份命令
## 有用户模式
mongodump -h 127.0.0.1:27017 -u 用户 -p 密码 -d 数据库名称 -o /dump
## 无用户模式
mongodump -h 127.0.0.1:27017 -d 数据库名称 -o /dump
# 打包备份文件夹
tar -zcvf practice.tar.gz practice/
# 退出容器
exit
# 将文件复制至宿主机器 docker cp 容器名:/来源文件地址 目标地址
docker cp mongo:/dump/practice.tar.gz /mnt/docker-data/mongo/dump
数据恢复
# 将文件复制至容器内
docker cp /mnt/docker-data/mongo/dump/practice.tar.gz mongo:/dump/
# 进入容器
docker exec -it mongo /bin/bash
# 进入备份文件夹
cd /dump
# 解压备份文件 至当前文件夹
tar -xzvf /dump/practice.tar.gz
# 执行数据还原命令
## 有用户模式
mongorestore -h 127.0.0.1:27017 -d 数据库名称 --dir 备份文件地址 -u 用户 -p 密码
## 无用户名称
mongorestore -h 127.0.0.1:27017 -d 数据库名称 --dir 备份文件地址
结果
