MongoDB3.4复制集配置

添加账号认证

Posted by 高强 on May 23, 2020

前置步骤

  • 打开 MongoDB官网 下载对应版本的安装包,此处选择 tgz 包
  • 配置节点认证文件
    openssl rand -base64 756 > repl_set.key
    chmod 400 keyFile
    

配置启动

复制集下每个节点配置一个 mongod.conf

systemLog:
   destination: file
   path: "/data/logs/mongo/rs1/mongod.log"
   logAppend: true
storage:
   journal:
   enabled: true
   dbPath: "/data/gaopq/mongo_data/mongo_replica_set/rs1"
processManagement:
   # 后台运行
   fork: true
   pidFilePath: "/data/gaopq/mongo_data/mongo_replica_set/rs1/mongod.pid"
net:
   # bindIp: 127.0.0.1
   bindIp: 0.0.0.0
   port: 27017
   maxIncomingConnections: 2000
setParameter:
   enableLocalhostAuthBypass: false
replication:
   # 复制集名称
   replSetName: replName
# 集群初始化及未配置账号密码时 security 部分请使用 # 注释
security:
   # 节点通信密钥文件
   keyFile: "/data/gaopq/mongo_data/mongo_replica_set/rs1/repl_set.key"
   # 是否启用认证功能,首次启动时将该配置设置为 false
   authorization: enabled

初始化复制集

登录任意节点,初始化复制集

> config = { _id: "configs", members: [{_id: 0, host: "192.168.1.2:27020"}, {_id: 1, host: "192.168.1.3:27021"}, {_id: 2, host: "192.168.1.4:27022"}]}
> rs.initiate(config)

注意:host 要使用供程序调用的host,不能使用 127.0.0.1 这种形式(如果程序不是部署在 mongo 服务器)

用户权限配置

添加用户并配置用户权限

admin = db.getSiblingDB("admin")
admin.createUser({user:"admin",pwd: "xxx", roles: [{ role: "userAdminAnyDatabase", db: "admin" }]})
db.createUser({user:"root",pwd: "xxxx", roles: [{ role: "root", db: "admin"} ]})
# 集群权限配置
admin.createUser({user:"cadmin",pwd: "xxxx", roles: [{ role: "clusterAdmin", db: "admin" }]})
# 普通用户权限配置, spec_db 为将要使用或将要配置认证的数据库名称
use spec_db
db.createUser({user:"userName",pwd: "Ci3Iw7Pm89Aj", roles: [{ role: "readWrite", db: "spec_db" }]})

操作安全

可使用以下方式关闭 mongod

  • kill -15 mongod_pid

  • 使用管理员认证登录mongodb

    db.shutdownServer()

启动脚本

#!/bin/bash
###################################################
# Author:                 gaopq
# Version:                0.01
# Email:                  peiqianggao@gmail.com
# Org:                    XX
# Date:                   2020-05-23 14:15:53
# Description:
###################################################
mongod -f rs1/mongod.conf
mongod -f rs2/mongod.conf
mongod -f rs3/mongod.conf
echo "Done!"