专栏首页指缝阳光MongoDB——Ubuntu安装及配置带认证的副本集(亲测)

MongoDB——Ubuntu安装及配置带认证的副本集(亲测)

一、概述

  1. 介绍: 在做 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 
  1. 进行连接,直接运行命令就可以进入了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
 

五、配置副本集

  1. 将上面的配置文件修改好后,保存退出。

重启 Mongo 服务

sudo service mongod restart

查看启动日志文件

cat /var/log/mongodb/mongod.log
  1. 将上面的操作在每个主机上执行。接下来才开始主菜

重启后需要进行账户验证, 即使用我们上面设置账号密码

# 选择为 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();
 
  1. 添加副本服务器信息rs.add({host:'192.168.204.103:27017',priority:0,votes:0})
  2. 不出意外,此时应该是配置成功了。(如果是阿里云这样的服务器,记得开放端口)。查看状态
  1. 此时去从服务器也是需要到 admin 进行认证。并且执行命令会出现下面的情况

这是因为从服务器不允许读写。此时的解决办法是执行下面的命令:db.getMongo().setSlaveOk(); 再执行命令就可以执行了。

六、测试

  1. 在主库执行下面的命令,插入数据use test db.user.insert({name:'xjf'}); db.user.find() 显示如下:
  1. 在从库进行数据查询

能看到这样的情况,代表我们配置成功了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • .NET Core+MongoDB集群搭建与实战

    安装 MongoDB 网上有很多教程,MongoDB 官方文档:https://docs.mongodb.com/manual/tutorial/install...

    痴者工良
  • 在Ubuntu 16.04上安装MongoDB(Xenial)

    在本数据库教程中,我们将一步步指导您在Ubuntu 16.04上安装MongoDB,然后再介绍MongoDB一些基本特性和功能。

    p@ssw0rd
  • MongoDB用户和角色解释系列(下)

    在前半部分我已经讲了很多理论。但是,我知道,如果这是您第一次处理MongoDB角色和用户问题,可能非常令人困惑。因此,让我们一步一步地通过一个示例来了解这个过程...

    MongoDB中文社区
  • 搭建 MongoDB分片(sharding) / 分区 / 集群环境

    分别在每台机器建立conf、mongos、config、shard1、shard2、shard3六个目录,因为mongos不存储数据,只需要建立日志文件目录即可...

    搜云库
  • 如何部署 MongoDB 集群

    MongoDB是一个领先的非关系型数据库管理系统,也是NoSQL运动的重要成员。MongoDB不是使用关系数据库管理系统(RDBMS)的表和固定模式,而是在文档...

    Mr.Crypto
  • mongodb副本集搭建

    可通过 ps -aux|grep mongo 或者 lsof -i:27017来查看是否启动成功

    shirley
  • 使用MongoDB构建数据库集群

    MongoDB是一个领先的非关系型数据库管理系统,也是NoSQL运动的重要成员。MongoDB不是使用关系数据库管理系统(RDBMS)的表和固定模式,而是在文档...

    杜逸先
  • MongoDB 4.0 正式发布,支持多文档事务

    MongoDB 4.0 已正式发布,MongoDB 是一个开源文档数据库,提供高性能、高可用性和自动扩展。

    芋道源码
  • 一文读懂MongoDB,从理论到实践

    MongoDB是一个开源的分布式文档形数据库,文档是一个键值对组成的数据结构,类似JSON,字段的值可以是数组或者字典(可以理解为嵌套的文档),例如

    程序员小强
  • 文档数据库 MongoDB

    简单说,通常我们使用的SQLite3、MySQL都是关系型数据库,使用一种通用的SQL脚本语言来操作,NoSQL数据则没有这种SQL语言,其内部保存的是一种JS...

    arcticfox
  • (1)解锁MongoDB replica set核心姿势

    本文倒腾目前大热的MongoDB Replica Set集群,在倒腾的同时串讲一些 MongoDB特性。

    有态度的马甲
  • 安装MongoDB

    MongoDB中文社区
  • 13个Mongodb GUI可视化管理工具,总有一款适合你

    MongoDB数据库默认的管理工具是(CLI)Shell命令行,对于专业的DBA来说比较容易上手,但是对于普通人员GUI可视化工具更方便使用。我们就来介绍13个...

    lyb-geek
  • MongoDB从理论到实践

    MongoDB是一个开源的分布式文档形数据库,文档是一个键值对组成的数据结构,类似JSON,字段的值可以是数组或者字典(可以理解为嵌套的文档),例如

    王录华
  • 如何在Ubuntu 16.04上使用Packetbeat和ELK收集基础结构度量标准

    Packetbeat允许您监控HTTP和MySQL等应用程序级协议以及DNS和其他服务的实时网络流量。

    好烟
  • (1)解锁 MongoDB replica set核心姿势

    副本集Replica Set是一个术语,定义具有多节点的数据库集群,这些节点具有主从复制(master-slave replication) 且节点之间实现了自...

    有态度的马甲
  • MongoDB 使用系列(一)-- 安装

    环境 系统:Ubuntu 16.04 MongoDB 版本:3.6 安装 添加软件源 1.添加 MongoDB 签名到 APT $ sudo apt-key...

    木制robot
  • 如何在Ubuntu 14.04上将解析应用程序迁移到解析服务器

    Parse是一个移动后端即服务平台,自2013年起由Facebook拥有。2016年1月,Parse宣布其托管服务将于2017年1月28日完全关闭。

    木纸鸢
  • MongoDB部署检查列表建议

    MongoDB Manual (Version 4.2)> Administration

    MongoDB中文社区

扫码关注云+社区

领取腾讯云代金券