Docker 部署Mongo副本集 加认证
Docker 部署Mongo副本集 加认证
Mongo副本集配置
创建2个文件
Keyfile.key
与mongod.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
目录 返回
首页