之前博客沒設密碼被清空之后,我暫時性將連接方式改為內部連接,不暴露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賬號查看了