当前位置: 首页 > article >正文

搭建`mongodb`副本集-开启权限认证 mongo:7.0.5

搭建mongodb副本集-开启权限认证 mongo:7.0.5

1.5.1、创建文件

创建配置文件保存目录和数据保存目录
mkdir -p /data/mongodb/{/conf,/data,/logs}
  • 生成和设置权限

这个文件一定要在一个服务里面生成然后复制到其它服务器,所有服务器的这个key一定是相同的。

openssl rand -base64 756 > /data/mongodb/conf/mongodbKeyfile.key

chmod 400 /data/mongodb/conf/mongodbKeyfile.key

192.168.1.124节点生成,然后复制到其它4个节点中。

scp mongodbKeyfile.key root@192.168.1.125:/data/mongodb/conf
scp mongodbKeyfile.key root@192.168.1.126:/data/mongodb/conf
scp mongodbKeyfile.key root@192.168.1.127:/data/mongodb/conf
scp mongodbKeyfile.key root@192.168.1.128:/data/mongodb/conf

1.5.2、配置文件

  • 第一台MongoDB配置文件

注意:更改端口号为最终端口号。这里的配置文件里面,不增加任何认证的问题,因为这只是为了集群和创建用户用的,后面需要重新覆盖掉。

vim /data/mongodb/conf/mongod.conf
net:
  port: 27017 # 这是启动端口
  bindIp: 0.0.0.0  # 允许哪些ip连接(好像和下面的命令参数 --bind_ip_all 相类似的作用)
systemLog:
  logAppend: true #  重新启动的mongodb的时候日志拼接在以前的日志文件上,不用新建
security:
  keyFile: /data/configdb/mongodbKeyfile.key  # 这个路径很重要(注意这个路径是下面容器映射过的路径),不要写宿主机的绝对路径,容器是访问不到宿主机的,应该写容器中的路径。
  authorization: "enabled" # 开启客户端连接验证
replication:
  replSetName: "rs"  # 副本集的名称
setParameter:
  # 事务锁超时最长时间(毫秒)默认 3 毫秒
  maxTransactionLockRequestTimeoutMillis: 1000

1.5.3、创建启动命令

首先不要增加任何认证,先启动不用认证的mongodb,在里面将需要的集合、副本和用户名密码权限等信息创建好,在使用需要认证的命令重新创建容器。因为配置的信息已经映射到宿主机上了,只要不把宿主机上的数据删除,所有配置都是存在的。

mkdir -p /opt/docker
vi /opt/docker/mongodb.sh
  • 不用认证的命令
MONGODB_DIR=/data/mongodb
NAME=mognodb
CONF=/data/mongodb/conf
docker stop ${NAME}
docker rm ${NAME}
docker run --name ${NAME} \
	-p 35964:27017 \
    -v ${MONGODB_DIR}/data:/data/db \
    -v ${CONF}:/data/configdb \
    -v ${MONGODB_DIR}/logs:/data/log \
   -d mongo:7.0.5 \
     --replSet "rs"

  • 启动
sh /opt/docker/mongodb.sh

1.5.4、配置副本

  • 连接任意一个节点,进行副本集配置
docker exec -it mognodb /bin/bash

连接三个节点中的任意一个,链接这个就是主节点。

./usr/bin/mongosh
  • 配置副本
var config={
     _id:"rs",
     members:[
         {_id:1,host:"192.168.1.124:35964",priority:5},
         {_id:2,host:"192.168.1.125:35964",priority:4},
         {_id:3,host:"192.168.1.126:35964",priority:3},
         {_id:4,host:"192.168.1.127:35964",priority:2},
         {_id:5,host:"192.168.1.128:35964",priority:1},
]};
rs.initiate(config)
  • 查看副本集配置信息
 rs.conf()
  • 查看副本集状态
rs.status()

1.5.5、创建用户名和密码

  • 切换数据库和创建用户
use userdb
db.createUser({ user: 'oeirnergnekladc', pwd: 'aE3UurXjWtxbHN80RCxL', roles: [ { role: "root", db: "admin" } ] });
db.auth('oeirnergnekladc', 'aE3UurXjWtxbHN80RCxL');

这里需要注意权限的问题,权限给root似乎太大了,但是也不能给太小,给太小会发现干啥都没权限。

在这里插入图片描述

1.5.6、创建需要认证的启动命令

  • 先退出mongodb和容器,回到宿主机
exit
exit

把原来的启动命令删除,重新编辑启动命令。

rm -rf /opt/docker/mongodb.sh
vi /opt/docker/mongodb.sh
  • 写入启动命令
MONGODB_DIR=/data/mongodb
NAME=mognodb
CONF=/data/mongodb/conf
docker stop ${NAME}
docker rm ${NAME}
docker run --name ${NAME} \
	-p 35964:27017 \
    -v ${MONGODB_DIR}/data:/data/db \
	-v ${CONF}:/data/configdb \
    -v ${MONGODB_DIR}/logs:/data/log \
    --restart=always \
    -d mongo:7.0.5 \
     --replSet "rs"  \
	 --auth --bind_ip_all -f "/data/configdb/mongod.conf"
  • 重启mongodb
sh /opt/docker/mongodb.sh

原创不易,转发制定出处,感谢网友理解在这里插入图片描述


http://www.kler.cn/a/350501.html

相关文章:

  • 前沿技术趋势洞察与分析:探寻科技变革的多维密码
  • InVideo AI技术浅析(五):生成对抗网络
  • 【Django开发】django美多商城项目完整开发4.0第12篇:商品部分,表结构【附代码文档】
  • 计算机网络 (49)网络安全问题概述
  • 设计和优化用于 AR、HUD 和高级显示系统的表面浮雕光栅
  • Redisson发布订阅学习
  • 单片机输出方波
  • 若依框架篇-若依框架搭建具体过程、后端源代码分析、功能详解(权限控制、数据字典、定时任务、代码生成、表单构建、接口测试)
  • AI测试之 TestGPT
  • 如何解决与kernel32.dll相关的常见错误:详细指南解析kernel32.dll文件缺失、损坏或错误加载问题
  • 仓库管理系统
  • AD9361 的 TX 输出中添加前置放大器,并在 RX 输入中添加 LNA。
  • 深度解析计数排序:原理、特性与应用
  • Shiro认证 -- (Authentication)
  • TCP Analysis Flags 之 TCP Window Update
  • 鸡兔同笼(贪心)
  • 【spring ai】java 实现RAG检索增强,超快速入门
  • Unity URP shader ———魔系符文宝石是如何练成的
  • C# Attribute 介绍
  • 微信小程序后台搭建—node+mysql
  • 农业机器人综述:技术现状、应用场景及未来展望
  • YOLOv8改进 - 注意力篇 - 引入ShuffleAttention注意力机制
  • 小米电机与STM32——CAN通信
  • 2024年第九届数维杯大学生数学建模挑战赛赛题和数维杯国际数学建模 LaTeX 模板
  • Android 未来可能支持 Linux 应用,Linux 终端可能登陆 Android 平台
  • 绕过MIME-Type验证