Docker 部署Mongo副本集 加认证

Mongo副本集配置

  • 创建2个文件 Keyfile.keymongod.conf

  • Keyfile.key

openssl rand -base64 756 > Keyfile.key 
chmod 400 Keyfile.key
  • mongod.conf
net:
  port: 27017                           # 启动端口
  bindIp: 0.0.0.0                       # 允许哪些ip连接
systemLog:
  logAppend: true                       # 重新启动日志拼接在以前的日志 不用新建
security:
  keyFile: "/data/configdb/Keyfile.key" # 副本集校验
  authorization: "enabled"              # 开启客户端连接验证
replication:
  replSetName: "rs01Set"                # 副本集的名称
  • 以下操作使用的是 Portainer
  • docker-compose.yml
version: '2'
services:
  mongo1:
    container_name: mongo1
    image: mongo:4.4.6
    restart: always
    ports:
      - 37017:27017
    volumes:
        - /data/mongodb/mongodb_data/mongo1:/data/db
        - /data/mongodb/mongodb_data/configdb:/data/configdb
        - /etc/localtime:/etc/localtime
    command: mongod --dbpath /data/db --config /data/configdb/mongod.conf
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 你的密码
  mongo2:
    container_name: mongo2
    image: mongo:4.4.6
    restart: always
    ports:
      - 37027:27017
    volumes:
        - /data/mongodb/mongodb_data/mongo2:/data/db
        - /data/mongodb/mongodb_data/configdb:/data/configdb
        - /etc/localtime:/etc/localtime
    command: mongod --dbpath /data/db --config /data/configdb/mongod.conf
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 你的密码
  mongo3:
    container_name: mongo3
    image: mongo:4.4.6
    restart: always
    ports:
      - 37037:27017
    volumes:
        - /data/mongodb/mongodb_data/mongo3:/data/db
        - /data/mongodb/mongodb_data/configdb:/data/configdb
        - /etc/localtime:/etc/localtime
    command: mongod --dbpath /data/db --config /data/configdb/mongod.conf
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 你的密码
  mongo-express:
    container_name: mongo-express
    image: mongo-express:latest
    restart: always
    ports:
      - 37081:8081
    links:
      - mongo1:mongo1
      - mongo2:mongo2
      - mongo3:mongo3
    environment:
      ME_CONFIG_MONGODB_SERVER: mongo1
      ME_CONFIG_MONGODB_ADMINUSERNAME: root mongo的账户
      ME_CONFIG_MONGODB_ADMINPASSWORD: 你的密码 mongo的密码
      ME_CONFIG_BASICAUTH_USERNAME: root mongo-express的账户
      ME_CONFIG_BASICAUTH_PASSWORD: 你的密码 mongo-express的密码
  • 注意

    • 上面的MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: Hoc-7vm-Ruh-ezY会在admin库创建root用户 但是可能不会创建 实际的mongo日志
      error":"UserNotFound: Could not find user \"root\" for db \"admin\""
      日志提示没有root用户 则需要创建用户
    • 进入客户端 $ mongo
    • 初始化副本集rs.initiate({_id:"rs01Set", members:[{_id:0,host:"你的公网ip:37017"},{_id:1,host:"你的公网ip:37027"},{_id:2,host:"你的公网ip:37037"}]}); 反馈 ok:1
    • 选择库 use admin
    • 创建用户 db.createUser({ user: 'root', pwd: '你的密码', roles: [ { role: "root", db: "admin" } ] })
  • 初始化副本集 rs.initiate({_id:"rs01Set", members:[{_id:0,host:"你的公网ip:37017"},{_id:1,host:"你的公网ip:37027"},{_id:2,host:"你的公网ip37037"}]});

  • 状态rs.status()

  • 配置rs.config()

  • 创建账户

    • 选择库use admin
    • 创建账户db.createUser({ user: 'root', pwd: '你的密码', roles: [ { role: "root", db: "admin" } ] });
  • 登陆 mongo -u root -p 你的密码 --authenticationDatabase admin

你可能感兴趣的:(Docker 部署Mongo副本集 加认证)