iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >MongoDB访问控制的副本集如何部署
  • 421
分享到

MongoDB访问控制的副本集如何部署

2023-06-29 06:06:29 421人浏览 薄情痞子
摘要

这篇文章主要介绍了MongoDB访问控制的副本集如何部署的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mongoDB访问控制的副本集如何部署文章都会有所收获,下面我们一起来看看吧。版本及环境 MonGoDB4.

这篇文章主要介绍了MongoDB访问控制的副本集如何部署的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mongoDB访问控制的副本集如何部署文章都会有所收获,下面我们一起来看看吧。

版本及环境 MonGoDB4.4 Centos6.5

一、下载 MongoDB Server 及 MongoDB shell

   MongoDB Server 提供数据库服务。 Mongo Shell 可以理解为命令行的客户端程序。

   下载地址:https://www.mongodb.com/try/download/commUnity

   此处选择对应的,版本, 平台,Package类型(server /shell)

MongoDB访问控制的副本集如何部署

    RMP 安装

rpm -ivh mongodb-org-server-4.4.12-1.el6.x86_64.rpm

rpm -ivh mongodb-org-shell-4.4.12-1.el6.x86_64.rpm

二、副本集初始化

副本集(replica set)是一组维护相同数据的mongod进程, 提供了高可用性。部分节点故障了,还可以自动选取主节点,继续提供服务。

由于副本集的链接方式和单点有些区别,所以测试环境也按照副本集方式部署。

    MongoDB访问控制的副本集如何部署

    1. 首先创建下数据库数据存储目录,用于存储数据。 环境是单机,三个节点的目录,都是在一台机器创建的,伪分布式

mkdir -p /srv/mongodb/rs0-0  /srv/mongodb/rs0-1 /srv/mongodb/rs0-2

    2. 依次启动三个mongod实例

mongod --replSet rs0 --fork --logpath  /srv/mongodb/0 --logappend --port 27017 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-0  --oplogSize 128mongod --replSet rs0 --fork  --logpath  /srv/mongodb/1 --logappend --port 27018 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-1  --oplogSize 128mongod --replSet rs0 --fork  --logpath  /srv/mongodb/2 --logappend --port 27019 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-2  --oplogSize 128

    启动后, ps -axu |grep mongo 看一下 3个进程 mongod 是不是都ok。

    3.使用mongo shell 连接其中一个节点。进行副本集初始化。

mongo --port 27017

    进入shell后, 执行如下命令。注意替换“10.13.50.40” 为实际IP

rsconf = {  _id: "rs0",  members: [    {     _id: 0,     host: "10.13.50.40:27017"    },    {     _id: 1,     host: "10.13.50.40:27018"    },    {     _id: 2,     host: "10.13.50.40:27019"    }   ]}
rs.initiate( rsconf )

    初始化完成后,可以通过

rs.conf()

    查看副本集配置。

    到这里3个节点的副本集已经配置好了。可以连接进行读写操作了。

但目前连接是没有访问控制的, 下面来增加访问控制。

三、增加访问控制

    在副本集中启用访问控制,需要进行两项配置。

    1. 副本集节点成员间的安全认证,支持keyfiles 或者 x.509 证书 认证。

副本集服务与数据库连接客户端间的安全认证, 用户名,密码。权限基于用户所属角色。

    副本集节点间的内部认证, 这里使用keyfiles。 通俗说就是所有节点共享相同的keyfile 作为密码。keyfile正确, 才能够加入副本集,实现了副本集节点间的身份验证。 

    创建一个keyfile, 复制三份,供3个节点使用。下面按官方手册, 使用openssl 生成随机密码,修改权限为400. 复制到3个目录备用。

openssl rand -base64 756 > keychmod  400 keymkdir -p  /srv/mongodb/k0 /srv/mongodb/k1   /srv/mongodb/k2cp key /srv/mongodb/k0/cp key /srv/mongodb/k1/cp key /srv/mongodb/k2/

下面创建用户,指定角色。 如前述,使用 mongo shell 连接数据库。创建用户需要在主节点进行。如果连接的节点不是当前主节点。可以用 rs.status(); 查看主节点ip端口后连接。进入mongo shell后, 输入如下命令。

admin = db.getSiblingDB("admin")admin.createUser(  {    user: "admin",    pwd: "admin!@#$",     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  })

    创建一个用户名未 admin 角色为 userAdminAnyDatabase 的用户, 密码为 admin!@#$。 关于内建角色的更多信息可以在这里了解。

  Https://docs.mongodb.com/v4.4/reference/built-in-roles/

    准备就绪后。 需要重启mongo server服务, 启用访问控制机制。 下面关闭所有节点。

mongo --port 27017 --eval 'db.adminCommand("shutdown")'mongo --port 27018 --eval 'db.adminCommand("shutdown")'mongo --port 27019 --eval 'db.adminCommand("shutdown")'

    重新启动mongod,启用访问控制 --auth --keyFile

mongod --replSet rs0 --fork --auth  --keyFile  /srv/mongodb/k0/key --logpath  /srv/mongodb/0 --logappend --port 27017 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-0  --oplogSize 128mongod --replSet rs0 --fork --auth --keyFile  /srv/mongodb/k1/key  --logpath  /srv/mongodb/1 --logappend --port 27018 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-1  --oplogSize 128mongod --replSet rs0 --fork --auth  --keyFile  /srv/mongodb/k2/key  --logpath  /srv/mongodb/2 --logappend --port 27019 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-2  --oplogSize 128

  此时,已经启用了访问控制, 无权限用户无法对数据库进行读写,无法新增用户。下面使用 带认证的方式登录。 --username 及 --passWord

mongo admin --username admin --password 'admin!@#$'  --host rs0/10.13.50.40:27017,10.13.50.40:27018,10.13.50.40:27019

    admin的角色userAdminAnyDatabase 具有用户管理权限,但无数据库读写权限。 登陆后在 mongo shell中创建一个数据库库读写用户,读写特定数据库。test 用户具有对数据库 mytest 的读写权限, 属于内置的 readWrite 角色。

db.createUser( {user: "test",pwd: "test!@#$",roles: [ { role: "readWrite", db: "mytest" } ]})

    然后mongo shell 使用 test 登录 验证。

mongo test --username test --password 'test!@#$'  --host rs0/10.13.50.40:27017,10.13.50.40:27018,10.13.50.40:27019

  test登录后,在mongo shell 中测试读写

use mytestdb.col.insert({name:'测试',age:1})db.col.find()

   查询结果

{ "_id" : ObjectId("61f3Da65e72c3f10edef9a78"), "name" : "测试", "age" : 1 }

关于“MongoDB访问控制的副本集如何部署”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MongoDB访问控制的副本集如何部署”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: MongoDB访问控制的副本集如何部署

本文链接: https://www.lsjlt.com/news/322946.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB访问控制的副本集如何部署
    这篇文章主要介绍了MongoDB访问控制的副本集如何部署的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MongoDB访问控制的副本集如何部署文章都会有所收获,下面我们一起来看看吧。版本及环境 MongoDB4....
    99+
    2023-06-29
  • 聊聊MongoDB 带访问控制的副本集部署问题
    目录一、下载MongoDBServer及MongoDBShell二、副本集初始化三、增加访问控制  当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简...
    99+
    2024-04-02
  • mongodb如何更换副本集
    要更换MongoDB副本集,需要遵循以下步骤:1. 添加新副本集成员:首先,在新服务器上安装MongoDB,并确保它可以连接到现有的...
    99+
    2023-08-23
    mongodb
  • Linux下如何配置MongoDB副本集
    这篇文章给大家分享的是有关Linux下如何配置MongoDB副本集的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据...
    99+
    2023-06-27
  • 如何进行MongoDB副本集搭建
    如何进行MongoDB副本集搭建,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们之前的案例都是在单个节点上实现的,在生产环境中这种做法是有风险的,如果服务宕机...
    99+
    2023-06-19
  • MongoDB的副本集同步机制是什么
    MongoDB的副本集同步机制是通过Oplog(操作日志)来实现的。在MongoDB的副本集中,每个节点都保存着一个Oplog,用来...
    99+
    2024-05-07
    MongoDB
  • MongoDB副本集集群从节点控制台报错10061怎么办
    这篇文章主要介绍MongoDB副本集集群从节点控制台报错10061怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!--------------------------------...
    99+
    2024-04-02
  • 如何为MongoDB添加分片副本集
    目录01 新建副本集02 副本集添加到已有的集群中(addShard)03 添加分片时间标签(addShardTag)04 给打好的标签添加具体的数值范围(addTagRange)0...
    99+
    2024-04-02
  • MongoDB如何删除添加副本集并修改副本集IP等信息
    本篇文章为大家展示了MongoDB如何删除添加副本集并修改副本集IP等信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MongoDB 删除,添加副本集,并修改副本...
    99+
    2024-04-02
  • mongodb副本集如何添加删除节点
    这期内容当中小编将会给大家带来有关mongodb副本集如何添加删除节点,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。环境介绍:三个节点的mongodb 副本集10.9.2...
    99+
    2024-04-02
  • MongoDB如何修改副本集节点的优先值
    这篇文章主要介绍MongoDB如何修改副本集节点的优先值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 复制集节点的优先级影响了 elections 的...
    99+
    2024-04-02
  • MongoDB副本集如何添加和删除仲裁节点
    小编给大家分享一下MongoDB副本集如何添加和删除仲裁节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • Kubernetes部署并配置Deploymen、网络映射、副本集的方法
    这篇“Kubernetes部署并配置Deploymen、网络映射、副本集的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2023-06-29
  • 如何使用Python访问MongoDB中的集合?
    MongoDB 是一个著名的 NoSQL 数据库,它提供了一种可扩展且灵活的方法来存储和检索数据,还可以通过 Python(一种多功能编程语言)访问数据库集合。将 MongoDB 与 Python 集成使开发人员能够轻松地与其数据库集合进行...
    99+
    2023-10-22
  • 如何进行Apache 访问控制
    这篇文章主要为大家分析了如何进行Apache 访问控制的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何进行Apache 访问控制”的知识吧。Apache ...
    99+
    2023-06-04
  • MySQL如何访问控制系统
    这篇文章将为大家详细讲解有关MySQL如何访问控制系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。          ...
    99+
    2024-04-02
  • TCP Wrappers访问控制如何配置
    这篇文章主要介绍“TCP Wrappers访问控制如何配置”,在日常操作中,相信很多人在TCP Wrappers访问控制如何配置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”TCP Wrappers访问控制如...
    99+
    2023-06-27
  • Linux如何访问控制列表ACL
    这篇文章主要为大家展示了“Linux如何访问控制列表ACL”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux如何访问控制列表ACL”这篇文章吧。Linux(和其他Unix等POSIX兼容的...
    99+
    2023-06-28
  • 基于Redis6.2.6版本部署Redis Cluster集群的问题
    目录1.Redis6.2.6简介以及环境规划2.二进制安装Redis程序2.1.二进制安装redis6.2.62.2.创建Reids Cluster集群目录3.配置Redis Clu...
    99+
    2024-04-02
  • 如何理解ACL的访问权限控制
    如何理解ACL的访问权限控制,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在普通权限中,Linux用户对文件只有三种身份,就是属主、属组和其他人;每种用户身份拥...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作