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

莱莱  金牌会员 | 2024-10-15 15:16:58 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 683|帖子 683|积分 2049

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

1.5.1、创建文件

创建设置文件保存目次和数据保存目次

  1. mkdir -p /data/mongodb/{/conf,/data,/logs}
复制代码


  • 生成和设置权限
这个文件一定要在一个服务内里生成然后复制到别的服务器,所有服务器的这个key一定是相同的。
  1. openssl rand -base64 756 > /data/mongodb/conf/mongodbKeyfile.key
  2. chmod 400 /data/mongodb/conf/mongodbKeyfile.key
复制代码
在192.168.1.124节点生成,然后复制到别的4个节点中。
  1. scp mongodbKeyfile.key root@192.168.1.125:/data/mongodb/conf
  2. scp mongodbKeyfile.key root@192.168.1.126:/data/mongodb/conf
  3. scp mongodbKeyfile.key root@192.168.1.127:/data/mongodb/conf
  4. scp mongodbKeyfile.key root@192.168.1.128:/data/mongodb/conf
复制代码
1.5.2、设置文件



  • 第一台MongoDB设置文件
注意:更改端口号为最终端口号。这里的设置文件内里,不增长任何认证的问题,由于这只是为了集群和创建用户用的,背面需要重新覆盖掉。
  1. vim /data/mongodb/conf/mongod.conf
复制代码
  1. net:
  2.   port: 27017 # 这是启动端口
  3.   bindIp: 0.0.0.0  # 允许哪些ip连接(好像和下面的命令参数 --bind_ip_all 相类似的作用)
  4. systemLog:
  5.   logAppend: true #  重新启动的mongodb的时候日志拼接在以前的日志文件上,不用新建
  6. security:
  7.   keyFile: /data/configdb/mongodbKeyfile.key  # 这个路径很重要(注意这个路径是下面容器映射过的路径),不要写宿主机的绝对路径,容器是访问不到宿主机的,应该写容器中的路径。
  8.   authorization: "enabled" # 开启客户端连接验证
  9. replication:
  10.   replSetName: "rs"  # 副本集的名称
  11. setParameter:
  12.   # 事务锁超时最长时间(毫秒)默认 3 毫秒
  13.   maxTransactionLockRequestTimeoutMillis: 1000
复制代码
1.5.3、创建启动命令

起首不要增长任何认证,先启动不用认证的mongodb,在内里将需要的集合、副本和用户名密码权限等信息创建好,在利用需要认证的命令重新创建容器。由于设置的信息已经映射到宿主机上了,只要不把宿主机上的数据删除,所有设置都是存在的。
  1. mkdir -p /opt/docker
  2. vi /opt/docker/mongodb.sh
复制代码


  • 不用认证的命令
  1. MONGODB_DIR=/data/mongodb
  2. NAME=mognodb
  3. CONF=/data/mongodb/conf
  4. docker stop ${NAME}
  5. docker rm ${NAME}
  6. docker run --name ${NAME} \
  7.         -p 35964:27017 \
  8.     -v ${MONGODB_DIR}/data:/data/db \
  9.     -v ${CONF}:/data/configdb \
  10.     -v ${MONGODB_DIR}/logs:/data/log \
  11.    -d mongo:7.0.5 \
  12.      --replSet "rs"
复制代码



  • 启动
  1. sh /opt/docker/mongodb.sh
复制代码
1.5.4、设置副本



  • 毗连任意一个节点,进行副本集设置
  1. docker exec -it mognodb /bin/bash
复制代码
毗连三个节点中的任意一个,链接这个就是主节点。
  1. ./usr/bin/mongosh
复制代码


  • 设置副本
  1. var config={
  2.      _id:"rs",
  3.      members:[
  4.          {_id:1,host:"192.168.1.124:35964",priority:5},
  5.          {_id:2,host:"192.168.1.125:35964",priority:4},
  6.          {_id:3,host:"192.168.1.126:35964",priority:3},
  7.          {_id:4,host:"192.168.1.127:35964",priority:2},
  8.          {_id:5,host:"192.168.1.128:35964",priority:1},
  9. ]};
  10. rs.initiate(config)
复制代码


  • 查看副本集设置信息
  1. rs.conf()
复制代码


  • 查看副本集状态
  1. rs.status()
复制代码
1.5.5、创建用户名和密码



  • 切换数据库和创建用户
  1. use userdb
  2. db.createUser({ user: 'oeirnergnekladc', pwd: 'aE3UurXjWtxbHN80RCxL', roles: [ { role: "root", db: "admin" } ] });
  3. db.auth('oeirnergnekladc', 'aE3UurXjWtxbHN80RCxL');
复制代码
  这里需要注意权限的问题,权限给root好像太大了,但是也不能给太小,给太小会发现干啥都没权限。
  

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



  • 先退出mongodb和容器,回到宿主机
  1. exit
  2. exit
复制代码
把原来的启动命令删除,重新编辑启动命令。
  1. rm -rf /opt/docker/mongodb.sh
  2. vi /opt/docker/mongodb.sh
复制代码


  • 写入启动命令
  1. MONGODB_DIR=/data/mongodb
  2. NAME=mognodb
  3. CONF=/data/mongodb/conf
  4. docker stop ${NAME}
  5. docker rm ${NAME}
  6. docker run --name ${NAME} \
  7.         -p 35964:27017 \
  8.     -v ${MONGODB_DIR}/data:/data/db \
  9.         -v ${CONF}:/data/configdb \
  10.     -v ${MONGODB_DIR}/logs:/data/log \
  11.     --restart=always \
  12.     -d mongo:7.0.5 \
  13.      --replSet "rs"  \
  14.          --auth --bind_ip_all -f "/data/configdb/mongod.conf"
复制代码


  • 重启mongodb
  1. sh /opt/docker/mongodb.sh
复制代码
原创不易,转发订定出处,感谢网友明白


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表