如何在 Ubuntu 22.04 上安装和保护 MongoDB

2023-11-13

MongoDB 是一种流行的开源、面向文档的 NoSQL 数据库,提供高性能、可扩展性和灵活性。由于它能够存储和管理大量非结构化数据,因此在现代 Web 应用程序中得到广泛使用。 MongoDB 可以安装在各种操作系统上,包括 Ubuntu 22.04。

在本教程中,我们将逐步完成在 Ubuntu 22.04 上安装和保护 MongoDB 的步骤。我们将介绍 MongoDB 社区版和企业版的安装过程。此外,我们将完成通过身份验证、SSL/TLS 加密和防火墙规则保护 MongoDB 的过程。

在本文中,我们将讨论以下主题:

  1. 在 Ubuntu 22.04 上安装 MongoDB
  2. 使用密码保护 MongoDB
  3. 为 MongoDB 启用身份验证
  4. 限制对 MongoDB 的访问
  5. 使用 UFW 在防火墙中打开端口

先决条件

在继续之前,请确保您全新安装了 Ubuntu 22.04,并且是具有 sudo 权限的非 root 用户。另外,请通过运行以下命令确保您的系统是最新的:

sudo apt update and sudo apt upgrade 
sudo apt install gnupg2 

一旦您的系统是最新的,我们就可以继续安装 MongoDB。

第 1 步:安装 MongoDB

在 Ubuntu 上安装 MongoDB 是一个相对简单的过程。您可以使用 Ubuntu 包管理器安装它,也可以直接从 MongoDB 网站下载它。

以下步骤将在您的 Ubuntu 系统上配置官方 MongoDB PPA 并安装它:

  1. 导入 MongoDB GPG 密钥:
    wget -nc https://www.mongodb.org/static/pgp/server-6.0.asc 
    cat server-6.0.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/mongodb.gpg >/dev/null 
    

    这些命令将导入 MongoDB 存储库的 GPG 密钥,用于验证存储库中包的真实性。

  2. 将 MongoDB 存储库添加到系统的包管理器中:
    sudo sh -c 'echo "deb [ arch=amd64,arm64 signed-by=/etc/apt/keyrings/mongodb.gpg] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" >> /etc/apt/sources.list.d/mongo.list' 
    

    此命令会将 MongoDB 存储库添加到系统包管理器的存储库列表中。

  3. 更新可用包的列表:
    sudo apt update 
    

    此命令将更新可用包的列表以包含 MongoDB 存储库中的包。

  4. 安装 MongoDB:
    sudo apt install mongodb-org 
    

    此命令将从 MongoDB 存储库安装最新稳定版本的 MongoDB。

  5. 启动 MongoDB 服务:
    sudo systemctl start mongod  
    

    该命令将启动 MongoDB 服务。

上述步骤将在Ubuntu系统上成功安装MongoDB。

接下来,启用 MongoDB 数据库的身份验证非常重要。这将要求用户输入用户名和密码才能访问数据库。如果不启用身份验证,任何有权访问服务器的人都可以查看和修改数据库中的数据。

第 2 步:使用密码保护 MongoDB

默认情况下,MongoDB 不需要密码即可访问数据库。但是,建议设置密码以保护数据库并防止未经授权的访问。

要为 MongoDB 设置密码,请按照下列步骤操作:

  1. Connect to the MongoDB shell:
    mongosh 
    

    该命令将打开 MongoDB shell,这是一个用于与数据库交互的命令行界面。

  2. Switch to the admin database:
    use admin 
    

    该命令将切换到`admin`数据库,用于管理数据库中的用户和角色。

  3. db.createUser({
      user: "admin",
      pwd: "password",
      roles: [ { role: "root", db: "admin" } ]
    }) 
    

    Replace `admin` and `password`以及新用户所需的用户名和密码。该命令将使用`root`中的角色`admin`数据库。 root 角色具有对所有数据库资源和功能的完全访问权限。

  4. 退出 MongoDB shell:
    exit 
    

步骤 3:启用身份验证

默认情况下,MongoDB 访问数据库不需要身份验证。但是,建议启用身份验证以保护数据库并防止未经授权的访问。

要启用 MongoDB 身份验证,请按照下列步骤操作:

  1. Edit the MongoDB configuration file:
    sudo nano /etc/mongod.conf 
    

    此命令将在 Nano 文本编辑器中打开 MongoDB 配置文件。

  2. Find the security section in the configuration file and add the following lines:
    
    security:
      authorization: enabled
    
    
    /etc/mongod.conf

    这将启用 MongoDB 的授权功能,该功能要求用户使用用户名和密码进行身份验证才能访问数据库。

  3. 保存更改并退出文本编辑器。
  4. Restart the MongoDB service:
    sudo systemctl restart mongod 
    

    此命令会将更改应用到 MongoDB 配置并重新启动服务。

步骤 4:限制对 MongoDB 的访问

默认情况下,MongoDB 允许来自任何 IP 地址的连接。但是,建议将对数据库的访问限制为特定的 IP 地址或范围以提高安全性。

要限制对 MongoDB 的访问,请按照下列步骤操作:

  1. Edit the MongoDB configuration file:
    sudo nano /etc/mongod.conf 
    

    此命令将在 Nano 文本编辑器中打开 MongoDB 配置文件。

  2. Find the net section in the configuration file and add the following lines:
    
    net:
      bindIp: 127.0.0.1,192.168.1.0/24
    
    
    /etc/mongod.conf

    将 127.0.0.1,192.168.1.0/24 替换为所需的 IP 地址或允许的范围。这将对数据库的访问限制为指定的 IP 地址或范围。

  3. 保存更改并退出文本编辑器。
  4. Restart the MongoDB service:
    sudo systemctl restart mongod 
    

    此命令会将更改应用到 MongoDB 配置并重新启动服务。

第5步:打开防火墙端口(UFW)

要在运行 ufw 的系统上的防火墙中打开 MongoDB 端口 (27017),请执行以下步骤:

  1. Check the status of the firewall:
    sudo ufw status 
    

    该命令将显示防火墙的当前状态。如果防火墙未激活,您需要先启动它,然后才能打开 MongoDB 端口。

  2. If the firewall is not active, start it by running the following command:
    sudo ufw enable 
    

    此命令将启用防火墙并允许传入系统的连接。

  3. Open the MongoDB port in the firewall:
    sudo ufw allow 27017 
    

    此命令将在防火墙中打开 MongoDB 端口 (27017) 并允许传入该端口的连接。

  4. 检查开放端口列表以验证 MongoDB 端口是否已开放:
    sudo ufw status 
    

完成这些步骤后,MongoDB 端口应在防火墙中打开,并且您应该能够从其他系统连接到数据库。

结论

在本文中,我们介绍了如何在 Ubuntu 22.04 上安装和保护 MongoDB。我们介绍了如何安装 MongoDB、设置密码、启用数据库身份验证以及限制对特定 IP 地址或范围的访问。通过执行这些步骤,您可以确保 MongoDB 安装是安全的,并且只有授权用户才能访问。

我希望这可以帮助您了解如何在 Ubuntu 22.04 上安装和保护 MongoDB。如果您还有任何疑问,请随时询问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 22.04 上安装和保护 MongoDB 的相关文章

  • 如何阻止 Django 中发生级联删除?

    我的 Django 应用程序中有三个模型类 class Folder models Model folder models ForeignKey Folder null True blank True related name folder
  • 寻找免费的 GUI 工具来使用 PostgreSQL [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目前 我正在使用独立的 GUI 工具DbSchema http www dbschema com 设计
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • mongo objectid“包含”查询

    我想查询 MongoDB 数据库中的集合以查找包含部分 ObjectID 的所有记录 对于普通字符串 我可以使用如下正则表达式 db teams find some string 51eed 但是我该如何对 ObjectID 执行类似的操作
  • 非加密用途的最快哈希值?

    我本质上是在准备要放入数据库的短语 它们可能格式错误 所以我想存储它们的简短散列 我将简单地比较它们是否存在 所以散列是理想的 我假设 MD5 在处理 100 000 个请求时相当慢 所以我想知道散列短语的最佳方法是什么 也许推出我自己的散
  • IndexedDB - 对象存储与多个数据库与索引?

    我想知道什么时候使用单个数据库与具有多个对象存储的数据库是一个好主意 我阅读了网络上的大多数教程并查看了 indexedDB 的规范 但找不到比较这些不同概念的好例子 有没有人有此类事情的具体示例 使用多个对象存储和 或代码的设计模型 只要
  • 显示包含特定表的所有数据库名称

    我的 SQL Server 中有很多数据库 我必须只搜索包含特定表名的数据库名称Heartbitmaster 我有很多数据库 例如Gotgold DVD等 我只想从包含此表的查询中查找数据库名称Heartbitmaster 我搜索我尝试查询
  • PostgreSQL 如何创建数据库或模式的副本?

    有没有一种简单的方法可以在 PostgreSQL 8 1 中创建数据库或模式的副本 我正在测试一些软件 它对数据库中的特定模式进行大量更新 我想复制它 以便我可以与原始版本进行一些比较 如果它位于同一服务器上 则只需使用带有 TEMPLAT
  • Mongo按动态字段排序

    所以我传入了一个动态变量 它是我想要排序的字段的名称 假设下面的 sortVariable 可能等于 price createdAt name 等 这不起作用 我该怎么做 function findStuff sortVariable va
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 如何记录数据库代码以查看数据库对象之间的依赖关系? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想为我的宠物项目编写文档 我的 PostgreSQL 数据库中有 30 个表 近 50 个视图和大约 30 个函数 存储过程 我想看
  • 在数据库中存储密码的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用sql脚本更改列的属性

    如何使用 sql 脚本更改列的属性 这是我尝试过但出现错误的方法 ALTER TABLE dbo tblBiometricPattern COLUMN BiometricPatternID TINYINT NOT NULL IDENTITY
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self
  • 未找到“MongoId”类(带有 MongoDB Doctrine 的 Zend 框架)

    我目前正在尝试将 MongoDB 与 ZendFramework 中的 Doctrine 集成 我做了很多教程 在 StackOverflow 或其他地方 但没有任何效果 我一步步按照教程进行操作 http www bigwisu com
  • 如何在 mongodb 聚合管道中使用 Javascript 对象?

    我有一个 JS 对象norm我想在 mongo 聚合管道中使用它 如下所示 var norm 1 1 2 1 16 3 1 413 4 1 622 5 1 6 6 1 753 7 3 001 8 2 818 9 3 291 10 2 824
  • SQL Server 批量插入 - “批量加载数据转换错误”

    bulk insert dbo A FROM d AData csv WITH FIELDTERMINATOR ROWTERMINATOR n 将批量数据插入数据库时 在检查可疑数据后 我遇到了无法解释的错误 消息 4867 16 级 状态
  • VBScript:从 Scripting.Dictionary 中对项目进行排序

    我有下面的代码 它获取这样的数据 姓名 1 姓名 4 姓名 2 姓名 3 并像这样列出 是一个复选框 姓名 1 姓名 4 姓名 2 姓名 3
  • 按一个字段聚合,选择另一个字段最大值的文档作为集合

    使用聚合框架 获取每个分组的字段最大值的文档的最佳方法是什么 因此使用下面的集合 我希望具有为每个具有最新日期的 group id 返回一个文档的功能 第二个清单显示了所需的结果 group id date 1 11 1 12 1 11 2
  • 如何使用 C# 查询远程 MS ACCESS .mdb 数据库

    我正在尝试使用 C 查询 mote MS ACCESS 数据库 mdb 文件 将文件复制到本地计算机时可以成功查询它 我只想远程放置文件 所以我的客户端程序不包含原始数据 static string m path http www xyz

随机推荐

  • 大数据技术——连接数据库报错:Cased by:javax.net.ssl.SSLHandshakeException:No appropriate protocol (protocol is dis

    问题 连接数据库报错 Cased by javax net ssl SSLHandshakeException No appropriate protocol protocol is disabled or cipher suites ar
  • css浮动改变鼠标箭头样式

    默认箭头样式 cursor default 系统默认箭头样式 手型 cursor pointer 手型 手型 cursor hand 手型 移动十字箭头 cursor move 移动十字箭头 帮助问号 cursor help 系统自带帮助问
  • 在openwrt上安装和配置git、ssh和python3

    简单记录在openwrt上安装配置git ssh和python3的流程 更新包管理器 openwrt 自带的包管理器是opkg 安装之前先更新一下 opkg update git和ssh一般放在一起配置 ssh配置完成才可以正常使用git
  • STM32的学习记录--2.WiFi模块的使用

    本次学习用的单片机是STM32F103C8T6 本次学习用的WiFi模块是ESP8266 本博客仅用于课余学习 不可商用 如有侵权 请告知我删除博客 谢谢配合 以下学习资料均在云盘 仅供学习交流 禁止用于商业用途 本文链接 个人博客 htt
  • 计算机视觉—— 相机标定

    目录 简介 一 相机模型 1 坐标系 2 坐标系变化 3 相机畸变模型 二 相机标定原理 三 张正友黑白棋盘格标定 2 1 算法思想 2 2 求解内参和外参的积 2 3 求解内参矩阵 2 4 求解外参矩阵 2 5 得到相机畸变矫正参数 2
  • 一文搞定Windows11+WSL+Pycharm开发环境及避坑

    WSL Pycharm开发环境搭建以及常见问题处理 Windows11 零 环境及背景 0 1 为什么需要这样的开发环境 0 2 什么是WSL 0 3 搭建环境 壹 Windows11 搭建WSL 1 1 启动 WSL 1 2 启动虚拟机平
  • Kibana忘记初始密码怎么办?

    在你elasticsearch的安装目录bin目录下面执行 bin gt elasticsearch reset password u elastic 执行结束之后就是下面初始化新的密码 注意 首次登录Kibana的登录名 elastic
  • Oracle数据库中神奇的dual表

    DUAL是oracle中非常神奇的一张表 有好多人用了很久oracle都不知道dual是干什么的 因为不是自己设计的表 一般处理的SQL也用不到 这里简单说下DUAL的用法 知道之后很多情况下DUAL查询还是很方便的 一 DUAL简介 1
  • Matlab:读取和处理大数据表格文本文件

    Matlab 读取和处理大数据表格文本文件 在实际的数据分析应用中 往往需要处理海量数据 针对大型数据文件 Matlab提供了快速高效的读取和处理工具 可以便捷地完成数据处理任务 本文将介绍如何使用Matlab读取和处理大型表格文本文件 第
  • c#控制台Console类

    c 控制台Console类 console表示控制台 是一个类 它封装了控制台的一些基本操作 输出 Console Write 输出一个或多个值后不换行 其后没有新行符 可以接着前面的字符继续写入 Console WriteLine 输出一
  • 炸弹人小游戏代码开源(python)

    作者 小刘在C站 个人主页 小刘主页 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的绽放 当遵从一心 踏浪而往 纵千山万水 也要抵达 目录 一 什么是python 二 游戏代码
  • 学python心得体会800字-python心得体会

    广告关闭 腾讯云双11爆品提前享 精选热门产品助力上云 云服务器首年88元起 买的越多返的越多 最高满返5000元 前些日子用python基于prometheus开发了一个vsphere volume卷监控的exporter 于是跟vsph
  • Swift入门篇-闭包和函数

    今天主要是给大家分享的是 swift中闭包的用法 我个人觉得闭包就是函数的简写方法 如果您函数不是很熟悉请查阅 swift入门篇 函数 1 函数类型 函数类型 var 变量 类型 gt 返回值 函数名 说明 1 函数名 表示函数地址 2 类
  • Mysql Workbench的下载和简单使用

    一 下载和安装 1 1网站 http dev mysql com downloads workbench 1 2 点击下载按钮 一直下一步下一步就可以安装成功 二 了解简单使用 2 1安装后 打开首页入下 2 2 连接数据库 点击MySQL
  • crm2013sql服务器安装Microsoft Dynamics CRM Reporting Extensions遇到问题

    前提 我需要创建一个新的组织 但是告诉我未在为组织指定的 Microsoft SQL Server Reporting Services 实例上安装 Microsoft Dynamics CRM Reporting Extensions 然
  • 算法程序设计实验报告

    多种方法解决算法问题 题目一 方法一 快速排序 方法二 直接插入排序 方法三 选择法排序 方法四 冒泡排序 题目二 方法一 冒泡排序 方法二 堆排序 方法三 分治策略 方法四 二路归并排序 题目三 方法一 穷举法 方法二 动态规划 方法三
  • HTML文件怎么引入高德地图

    1 首先 注册高德地图开发者 这个直接在官网上注册 输入必要信息就行 如下 2 注册完成后 进入个人中心 依次点击 应用管理 gt 我的应用 gt 创建新应用 如下 这里输入应用名称 选择类型就行 3 接着就需要为应用添加key值 点击右上
  • 如何在 PHP 中比较两个数组值:实用指南

    在 PHP 中 数组是一种允许存储多个元素的数据结构 数组中的每个元素都有唯一的索引 对数组执行的一种常见操作是比较它们以确定它们是否相同或是否包含相同的元素 在 PHP 中比较数组的方法有多种 包括使用数组函数 例如 array diff
  • 如何在 Debian Linux 上使用 ChromeDriver 设置 Selenium

    本教程将帮助您在 Debian 9 和 Debian 8 上使用 ChromeDriver 设置 Selenium 本教程还包括一个使用 Selenium 独立服务器和 ChromeDriver 并运行示例测试用例的 Java 程序示例 X
  • 如何在 Ubuntu 22.04 上安装和保护 MongoDB

    MongoDB 是一种流行的开源 面向文档的 NoSQL 数据库 提供高性能 可扩展性和灵活性 由于它能够存储和管理大量非结构化数据 因此在现代 Web 应用程序中得到广泛使用 MongoDB 可以安装在各种操作系统上 包括 Ubuntu