docker 下mongodb 授权、备份、还原
一,mongo授权
1,docker 安装mongodb
docker run -itd --name mongo -p 27017:27017 mongo --auth
2,进入容器
docker exec -it <容器名字> /bin/bash
3,输入mongo进入mongo shell
4, use admin 选择admin库创建管理员账号
db.createUser({ user: 'admin', pwd: 'admin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
5, db.auth("admin","admin")返回1,则认证成功
6,切换到想要加密的数据库
如 use app
db.createUser({user: "user", pwd: "user", roles: [{ role: "readWrite", db: "app"}]}); 其中readWrite可以替换为dbOwner(拥护最高权限)
7,db.auth("user","user")返回1,则认证成功
二,mongo备份还原
1,docker exec -it <你的MongodDB容器名> /bin/bash
2,容器中执行
mongodump -h 127.0.0.1 --port 27017 -u=用户名 -p=密码 -d test -o /dump
参数 | 作用 | |
-h | host | |
--port | 端口 | |
-d | 指定数据库 | |
-o | 指定备份到哪个目录,不指定应该是直接备份到根目录的/dump文件夹 | |
-u | 用户名 | |
-p | 密码 |
系统备份成功会在/home/dump目录下自动生成一个数据库名的文件夹/test,里面是全部Collection备份的bson文件
3,容器中执行 tar -zcvf test.tar.gz /dump/test
4,从容器复制到宿主
docker cp <你的MongodDB容器名>:/dump/test.tar.gz /home
5,从宿主机到容器
1)进入docker mongodb容器:docker exec -it mymongo /bin/sh
2)在docker容器新建mongodb数据要导入的目录,mkdir -p /opt/mongodbBack/
3)docker cp linux备份mongodb的数据文件(不是文件夹) mymongo(容器名称或id):/opt/mongodbBack/
6,还原备份
进入docker mongodb容器:docker exec -it mymongo /bin/sh
docker exec -it mymongo mongorestore -h 127.0.0.1:27017 -u admin -p admin123456 -d admin --dir /data/backup/admin