前置步骤
- 打开 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!"