docker部署mongodb

docker部署mongodb

拉取镜像

docker pull mongo

启动mongo(docker run和docker compose)

  • docker run

--auth:需要密码才能访问容器服务。
-e MONGO_INITDB_ROOT_USERNAME:设置用户名
-e MONGO_INITDB_ROOT_PASSWORD:设置密码

docker run --restart=always --name mongodb -v ~/docker/mongo:/data/db -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=Mongo,123456. mongo --auth
  • docker compose
version: '3.9'
services:
    mongo:
        command: '--auth'
        image: mongo
        environment:
            - 'MONGO_INITDB_ROOT_PASSWORD=Mongo,123456.'
            - MONGO_INITDB_ROOT_USERNAME=admin
        ports:
            - '27017:27017'
        volumes:
            - './data:/data/db'
        container_name: mongodb
        restart: always

进入容器,创建用户

  • 进入容器
    docker exec -it mongodb mongosh admin

  • 使用启动时设置的账号密码认证db.auth("用户名","密码")
    db.auth("admin","Mongo,123456.")

  • 创建一个名为 admin2,密码为 123456 的用户

db.createUser({ user:'admin02',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

开启远程连接

  • 推出容器 exit
  • 进入容器bash docker exec -it mongodb bash
  • 更新源 apt-get update
  • 安装vim apt-get install vim -y
  • 修改mongo配置文件 vim /etc/mongod.conf.orig
    将其中的 bindIp: 127.0.0.1 注释掉# bindIp: 127.0.0.1
    或者改成bindIp: 0.0.0.0
    即可开启远程连接

mongodb备份

在连接mongo时,使用参数 --authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。

mongodump  -h 127.0.0.1:27017 --authenticationDatabase admin -u admin -p Mongo,123456. -d xxx  -o /data/bak

mongodb恢复数据

在连接mongo时,使用参数 --authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。

mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -u admin -p Mongo,123456. -d xxx --drop /data/ehr_data/xxx
posted @ 2024-04-17 14:27  武胜造纸农  阅读(162)  评论(0)    收藏  举报