大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

设置docker mongo权限

之前博客没设密码被清空之后,我暂时性将连接方式改为内部连接,不暴露mongo外部端口,但这样对远程查看操作数据库不友好,所以还是选择设置权限。

之前mongo的启动方式为docker run --name mongo-3.4 -p 27017:27017 -d mongo:3.4,是没有挂载本地的,所以还是需要删除重新启动新镜像,需要备份mogno数据用于恢复;

备份mongo数据

可参考Docker MongoDB 数据库备份 并复制到宿主 恢复
我这里复制到/home目录下: /home/test.tar.gz

新建mongo容器

备份到/home目录后,可以删除容器

docker stop <你的MongodDB容器名> && docker rm <你的MongodDB容器名>`

启动新容器

docker run --name mongo-3.4 -p 27017:27017 -v ~/mongo/datadir:/data/db -d mongo:3.4 --auth

设置mongo密码

进入mongo容器

docker exec -it <你的MongodDB容器名> bash

进入mongo

mongo

进入admin库创建root用户

use admin
db.createUser({
  user: 'root',
  pwd: 'root',
  roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]
})

然后进入你需要设置密码的库(例如: test)

use test
db.createUser({
  user: 'test',
  pwd: 'test',
  roles: [{role: 'readWrite', db: 'test'}]
})

退出mongo

exit

恢复数据

此时我们已经暴露mongo外部端口,直接执行mongorestore

tar -zxvf /home/test.tar.gz
mongorestore -h 127.0.0.1:27017 -d test /home/dump/test/

设置应用容器连接mongo链接

mongodb://test:test@mongo:27017/test

之后你就可以在本地使用robomongo等软件登录root账号查看了

参考文章

Docker MongoDB 数据库备份 并复制到宿主 恢复
基于docker的mongo-db开启授权密码访问