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      

        mongorestore -h IP:port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
        --drop:先删除所有的记录,然后恢复.【drop慎用】
       docker exec -it <containerName>/<containerId>  mongorestore -h IP:port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
        # 执行命令恢复   
         docker exec -it mymongo mongorestore -h 127.0.0.1:27017 -u admin -p admin123456 -d admin --dir /data/backup/admin

        

      

     

            

posted @ 2020-06-09 14:39  lvhaiquan  阅读(739)  评论(0编辑  收藏  举报