高可用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")
高可用mongodb集群(分片+副本):用户权限配置的更多相关文章
- 搭建高可用mongodb集群—— 分片
从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出 ...
- 搭建高可用MongoDB集群(一):配置MongoDB
在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...
- 搭建高可用mongodb集群(四)—— 分片(经典)
转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...
- [转]搭建高可用mongodb集群(四)—— 分片
按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...
- [转]搭建高可用mongodb集群(二)—— 副本集
在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...
- 搭建高可用mongodb集群(四)—— 分片
按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...
- 搭建高可用mongodb集群(二)—— 副本集
在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...
- 搭建高可用mongodb集群(四)—— 分片
按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...
- 搭建高可用mongodb集群(二)—— 副本集
在上一篇文章<搭建高可用MongoDB集群(一)--配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点 ...
- 搭建高可用mongodb集群—— 副本集
转自:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB& ...
随机推荐
- kafka学习之三_信创CPU下单节点kafka性能测试验证
kafka学习之三_信创CPU下单节点kafka性能测试验证 背景 前面学习了 3controller+5broker 的集群部署模式. 晚上想着能够验证一下国产机器的性能. 但是国产机器上面的设备有 ...
- 深度Q网络:DQN项目实战CartPole-v0
摘要:相比于Q learning,DQN本质上是为了适应更为复杂的环境,并且经过不断的改良迭代,到了Nature DQN(即Volodymyr Mnih发表的Nature论文)这里才算是基本完善. 本 ...
- Rainbond助力“信创应用”迁移上云
Rainbond v5.14.2 版本,又称信创版本.从这个版本开始,开源用户也可以利用 Rainbond 管理符合信创要求的硬件计算资源.在这个版本中,产品团队将此前只在企业版产品中存在的信创相关功 ...
- 快速切换 nodejs 的版本
最近在开发一个常驻进程.定时任务统一调度系统,以应对开发在进程管理方面遇到的各种复杂问题. 组里开发项目,一般来说是一个人承包整个项目,包括调度器设计,还有后台系统.我还有一部分工作,是队列相关的信息 ...
- Redis 集群偶数节点跨地域部署之高可用测试
笔者目前所在公司存在多套 Redis 集群: A 集群 主 + 从 共 60 个分片,部署在 3 + 3 台物理机上,每台机器各承载 10 个端口 主库 30 个端口在广州,从库 30 个端口在中山 ...
- (五) MdbCluster分布式内存数据库——数据迁移架构及节点扩缩容状态图
(五) MdbCluster分布式内存数据库--数据迁移架构及节点扩缩容状态图 上一篇:(四) MdbCluster分布式内存数据库--业务消息处理 本节主要讨论在系统扩容期间的数据迁移架构及节点的状 ...
- docker 镜像与容器存储目录结构
目录列表及大小示例-20220314 root@dewan01:/var/lib/docker# du -sh * 88K buildkit 72K containers 884K image 60K ...
- EaselJS 源码分析系列--第四篇
鼠标交互事件 前几篇关注的是如何渲染,那么鼠标交互如何实现呢? Canvas context 本身没有像浏览器 DOM 一样的交互事件 EaselJS 如何在 canvas 内实现自己的鼠标事件系统? ...
- 最新基于nonebot的qq机器人搭建
导读 核心资源 ( 参考各项目到各自release下载 NoneBot简介 | go-cqhttp 帮助中心qq登录需要包签名,要自己部署 https://github.com/fuqiuluo/un ...
- python 镜像
https://pypi.douban.com/simple/ 豆瓣源 pip install -i https://pypi.douban.com/simple/ pymysql # pymys ...