MongoDB——Ubuntu安装及配置带认证的副本集(亲测)
时间:2022-07-25
本文章向大家介绍MongoDB——Ubuntu安装及配置带认证的副本集(亲测),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、概述
- 介绍: 在做 MongoDB 数据备份时,需要进行数据的复制冗余,此时可以用副本集,并且为了传输安全,需要加上认证。我的 MongoDB 版本是 4.0.18,都是本人亲自打过的命令,被网上的卡了很久。
二、安装 MongoDB
导入公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
在源列表中添加一个新的仓库,以便你可以安装 MongoDB 社区版并获得自动更新
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/4.0 multiverse" | su
要安装 mongodb-org,我们需要更新我们的包数据库,以便系统知道可用的新包
sudo apt update
安装最新稳定版的 MongoDB
sudo apt install -y mongodb-org
此时 MongoDB 已经配置完成,包管理器将创建/var/lib/mongodb和/var/log/mongodb。/etc/mongod.conf为配置文件。
# 1. 启动
sudo service mongod start
# 2. 停止
sudo service mongod stop
# 3. 重启
sudo service mongod restart
- 进行连接,直接运行命令就可以进入了mongo
三、设置 MongoDB 的密码
先进入 Mongodb ,然后使用 admin 库
use admin;
创建管理员账户(应该可以在此处直接创建 root 用户,请提前看下面的第三 部分 5 小点)
db.createUser({user:'xjf', pwd:'123456', roles:[{role:'userAdminAnyDatabase', db:'admin'}]});
验证是否创建成功,只需退出然后进入验证,如果返回 1 则代表成功。下面为效果
> use admin
switched to db admin
> db.auth('xjf','123456');
1
四、生成 keyFile(认证文件)及配置
生成
openssl rand -base64 756> /root/keyfile
修改权限(被坑很久)
网上都是说修改权限为 600 ,但是我怎么都不行,就是如下的命令。
chmod 600 /mongo/mongo.key
该认证文件需要复制到每个从主机上。可以使用传输命令
scp -r mongo.key root@192.168.204.103:/mongokey/mongo.key
修改配置文件,大多配置没变动,主要实现副本集。如下:
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
# 此处改动,配置为 0.0.0.0 才能外部访问
bindIp: 0.0.0.0
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
# 改动
security:
# 开启认证
authorization: enabled
# 认证文件的路径
keyFile: "/mongo/mongo.key"
clusterAuthMode: keyFile
#operationProfiling:
# 改动
replication:
oplogSizeMB: 10240
# 副本集名称
replSetName: rs
五、配置副本集
- 将上面的配置文件修改好后,保存退出。
重启 Mongo 服务
sudo service mongod restart
查看启动日志文件
cat /var/log/mongodb/mongod.log
- 将上面的操作在每个主机上执行。接下来才开始主菜
重启后需要进行账户验证, 即使用我们上面设置账号密码
# 选择为 admin
use admin;
# 进行认证
db.auth('xjf','123456');
注意: 进来之后发现执行 rs.status() 命令权限不够,需要创建 root 用户,此时能直接进行创建:
db.createUser({user:'root',pwd: '123456',roles:[{role:'root',db:'admin'}]});
然后再进行认证:
db.auth('root','123456');
在要成为主节点的服务器上进行操作
# 初始化,此处为了方便演示增加服务,故初始化时只加了一台
rs.initiate({_id:'rs',members:[{_id:0, host:'192.168.204.102:27017'}]});
查看状态, 使用 rs.status() 命令能查看状态,如下
rs.status();
- 添加副本服务器信息rs.add({host:'192.168.204.103:27017',priority:0,votes:0})
- 不出意外,此时应该是配置成功了。(如果是阿里云这样的服务器,记得开放端口)。查看状态
- 此时去从服务器也是需要到 admin 进行认证。并且执行命令会出现下面的情况
这是因为从服务器不允许读写。此时的解决办法是执行下面的命令:db.getMongo().setSlaveOk(); 再执行命令就可以执行了。
六、测试
- 在主库执行下面的命令,插入数据use test db.user.insert({name:'xjf'}); db.user.find() 显示如下:
- 在从库进行数据查询
能看到这样的情况,代表我们配置成功了。
- [接口测试 - 基础篇] 04 无法绕过的json解析
- 【专知-PyTorch手把手深度学习教程02】CNN快速理解与PyTorch实现: 图文+代码
- [接口测试 - 基础篇] 03 unittest测试框架了解多少才够?
- 关关的刷题日记09——Leetcode 80. Remove Duplicates from Sorted Array II
- [linux][kernel]dump kmsg到文件系统中
- [接口测试 - 基础篇] 12 还是要掌握python日志管理模块的
- Spring整合Quartz分布式调度
- [接口测试 - 基础篇] 11 掌握下python解析YAML格式也是需要的
- 如何用Python创建眼下火爆的区块链?这篇干货请收藏
- [接口测试 - 基础篇] 10 别啊,还有INI格式呢,别忘记我
- [接口测试 - 基础篇] 09 其实吧,读写csv格式也是要掌握的
- 【源码分享】机器学习之Python支持向量机
- [接口测试 - 基础篇] 08 封装个基本的excel解析类
- 关关的刷题日记10——Leetcode 1. Two Sum 方法1
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法