高可用mongodb集群(分片+副本):用户权限配置

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 高可用mongodb集群(分片+副本):用户权限配置

对于搭建好的mongodb副本集加分片集群,为了安全,需启动安全认证,使用账号密码登录。
默认的mongodb是不设置认证的。只要ip和端口正确就能连接,这样是不安全的。
mongodb官网声称,为了能保障mongodb的安全可以做以下几个步骤:
1、使用新的端口,默认的27017端口如果一旦知道了ip就能连接上,不太安全
2、设置mongodb的网络环境,最好将mongodb部署到公司服务器内网,这样外网是访问不到的。公司内部访问使用vpn等
3、开启安全认证。认证要同时设置服务器之间的内部认证方式,同时要设置客户端连接到集群的账号密码认证方式
以下详细描述如何配置安全认证。

■ 创建副本集认证的key文件

用openssl生成密码文件,然后使用chmod来更改文件权限,仅为文件所有者提供读取权限
cd /data/mongodb/conf
openssl rand -out mongo.keyfile -base64 90
chmod 600 mongo.keyfile
ll mongo.keyfile
-r-------- 1 mongod mongod 122 Aug 4 08:33 mongo.keyfile
提示:所有副本集节点都必须要用同一份keyfile,一般是在一台机器上生成,然后拷贝到其他机器上,且必须有读的权限,否则将来会报错:
permissions on /data/mongodb/conf/mongo.keyfile are too open

■ 修改配置文件指定keyfile

编辑各个服务的配置文件,添加如下内容:
vim /data/mongodb/conf/{config,shard[1-3],mongos}.conf
keyFile = /data/mongodb/conf/mongo.keyfile
注:开启keyfile认证就默认开启了auth认证

拷贝到其他节点:
scp /data/mongodb/conf/{config.conf,shard[1-3].conf,mongos.conf,mongo.keyfile} node2:/data/mongodb/conf
scp /data/mongodb/conf/{config.conf,shard[1-3].conf,mongos.conf,mongo.keyfile} node3:/data/mongodb/conf

■ 重新启动节点

依次启动配置节点、分片节点、路由节点

■ 创建帐号和认证

客户端mongosh,通过localhost登录任意一个mongos路由
提示:相当于一个后门,只能在 admin 下添加用户
提示:通过mongos添加的账号信息,只会保存到配置节点的服务中,具体的数据节点不保存账号信息,因此分片中的账号信息不涉及到同步问题
建议:先创建超管用户和普通用户,然后再开启安全配置

创建管理员帐号:
use admin
db.createUser({user: "admin", pwd: "password", roles: ["root"]})
db.auth("admin", "password")

创建一个普通权限帐号:
use testdb
db.createUser({user: "liking", pwd: "password", roles: ["readWrite"]})
db.auth("liking", "password")

■ 用管理员帐号可查看整体的分片情况

use admin
db.auth("admin", "password")
sh.status()

■ 用普通帐号访问数据

use testdb
db.auth("liking", "password")

■ 客户端连接多个mongos的标准格式

mongo mongodb://admin:'password'@node1:20000,node2:20000,node3:20000/testdb?authSource=admin
用 mongosh 连接报错,暂时无法解决,只能去掉用户名及密码连接,连接后再鉴权:
mongosh mongodb://node1:20000,node2:20000,node3:20000/admin
db.auth("admin", "password")

目录
相关文章
|
10月前
|
存储 NoSQL 安全
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
364 0
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
1163 5
|
存储 NoSQL 前端开发
MongoDB 分片
10月更文挑战第17天
176 2
|
存储 监控 NoSQL
*MongoDB的水平扩展主要通过分片技术实
*MongoDB的水平扩展主要通过分片技术实
194 5
|
存储 NoSQL 前端开发
MongoDB 分片总结
这篇文章总结了MongoDB分片的概念、集群结构、分片实例、配置和测试过程。
904 6
|
存储 运维 NoSQL
轻松上手:逐步搭建你的高可用MongoDB集群(分片)
【8月更文挑战第13天】在数据激增的背景下,传统单机数据库难以胜任。MongoDB作为流行NoSQL数据库,采用分片技术实现水平扩展,有效处理海量数据。分片将数据分散存储,提高并发处理能力和容错性,是高可用架构基石。构建MongoDB集群需理解shard、config server和router三组件协同工作原理。通过具体实例演示集群搭建流程,包括各组件的启动及配置,确保数据高可用性和系统稳定性。合理规划与实践可构建高效稳定的MongoDB集群,满足业务需求并支持未来扩展。
774 0
|
5月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
5月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
450 79
|
5月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
279 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉

推荐镜像

更多