如何在 Ubuntu 18.04 上安装 MongoDB

2023-10-31

MongoDB 是一个免费的开源文档数据库。它属于 NoSQL 数据库家族,与 MySQL 和 PostgreSQL 等传统的基于表的 SQL 数据库不同。

在 MongoDB 中,数据存储在灵活的、类似 JSON字段可能因文档而异的文档。它不需要预定义的模式,并且数据结构可以随着时间的推移而改变。

在本教程中,我们将介绍在 Ubuntu 18.04 计算机上从官方 MongoDB 存储库安装和配置最新版本 MongoDB 社区版的过程。

先决条件#

在继续本教程之前,请确保您以以下身份登录具有 sudo 权限的用户 .

安装 MongoDB#

在撰写本文时,MongoDB 的最新版本是 4.0 版。

在继续安装过程之前,请转到在 Ubuntu 上安装MongoDB 文档部分,并检查是否有可用的新版本。

以下步骤描述了如何在 Ubuntu 服务器上安装 MongoDB:

  1. 使用以下命令将 MongoDB GPG 密钥添加到您的系统:

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

    导入密钥后,添加 MongoDB 存储库:

    sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'

    如果您收到一条错误消息说add-apt-repository command not found,安装software-properties-common包裹。

    要安装旧版本的 MongoDB,请替换4.0与您喜欢的版本。

  2. 更新软件包列表并安装mongodb-org元包通过键入:

    sudo apt updatesudo apt install mongodb-org

    以下软件包将作为安装包的一部分安装在您的系统上mongodb-org包裹:

    • mongodb-org-server - The mongod守护进程和相应的初始化脚本和配置。
    • mongodb-org-mongos - The mongos daemon.
    • mongodb-org-shell- mongo shell 是 MongoDB 的交互式 JavaScript 接口。它用于通过命令行执行管理任务。
    • mongodb-org-tools- 包含多个用于导入和导出数据、统计数据以及其他实用程序的 MongoDB 工具。
  3. 安装完成后,启动 MongoDB 守护进程,并通过键入以下命令使其在启动时启动:

    sudo systemctl start mongodsudo systemctl enable mongod
  4. 为了验证安装是否已成功完成,我们将使用以下命令连接到 MongoDB 数据库服务器mongo工具并打印连接状态:

    mongo --eval 'db.runCommand({ connectionStatus: 1 })'

    输出将如下所示:

    MongoDB shell version v4.0.10
    connecting to: mongodb://127.0.0.1:27017
    MongoDB server version: 4.0.10
    {
      "authInfo" : {
        "authenticatedUsers" : [ ],
        "authenticatedUserRoles" : [ ]
      },
      "ok" : 1
    }

    值为1为了ok字段表示成功。

配置 MongoDB#

MongoDB 使用YAML格式化的配置文件,/etc/mongod.conf。您可以通过编辑此文件来配置 MongoDB 实例。

默认配置设置对于大多数用户来说已经足够了。但对于生产环境,建议取消安全部分的注释并启用授权,如下所示:

/etc/mongod.conf
security:
  authorization: enabled

The authorization选项启用基于角色的访问控制 (RBAC)它规范用户对数据库资源和操作的访问。如果禁用此选项,每个用户都将有权访问所有数据库并执行任何操作。

更改 MongoDB 配置文件后,使用以下命令重新启动 mongod 服务:

sudo systemctl restart mongod

要查找有关 MongoDB 4.0 中可用配置选项的更多信息,请访问配置文件选项文档页面。

创建 MongoDB 管理用户#

如果您启用了 MongoDB 身份验证,请创建一个管理 MongoDB 用户,用于访问和管理 MongoDB 实例。

首先,使用以下命令访问 mongo shell:

mongo

进入 MongoDB shell 后,输入以下命令连接到admin数据库:

use admin
switched to db admin

发出以下命令来创建一个名为的新用户mongoAdminuserAdminAnyDatabase role:

db.createUser(
  {
    user: "mongoAdmin", 
    pwd: "changeMe", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
Successfully added user: {
	"user" : "mongoAdmin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}
您可以根据需要命名管理 MongoDB 用户。

使用以下命令退出 mongo shell:

quit()

要测试更改,请使用您之前创建的管理用户访问 mongo shell:

mongo -u mongoAdmin -p --authenticationDatabase admin
use admin
switched to db admin

现在,使用以下命令打印用户:

show users
{
	"_id" : "admin.mongoAdmin",
	"user" : "mongoAdmin",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}

您还可以尝试在不使用任何参数的情况下访问 mongo shell(只需键入mongo)并查看是否可以使用与上面相同的命令列出用户。

结论#

您已经学习了如何在 Ubuntu 18.04 服务器上安装和配置 MongoDB 4.0。访问MongoDB 4.0 手册有关此主题的更多信息。

如果您遇到问题或有反馈,请在下面发表评论。

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

如何在 Ubuntu 18.04 上安装 MongoDB 的相关文章

  • 如何在没有objectid字段的mongodb集合上查找上次更新/插入/删除操作时间

    我在 MongoDb 数据库中有一些未使用的集合 我必须找出对数据库中的集合执行 CRUD 操作的时间 我们有自己的 id字段 而不是mongo默认的object id 我们没有任何时间在集合中归档以找出修改时间 有没有办法从元数据中找出m
  • Java MongoDB 获取子文档的值

    我试图从子文档中获取键的值 但我似乎无法弄清楚如何使用 BasicDBObject get 函数 因为键嵌入了两层深度 这是文档的结构 File name file 1 report name report 1 group RnD 基本上一
  • 时间序列数据的键值存储?

    我一直在使用 SQL Server 存储数十万个对象的历史时间序列数据 每天观察大约 100 次 我发现查询 给我时间 t1 和时间 t2 之间对象 XYZ 的所有值 太慢 对于我的需要 慢超过一秒 我按时间戳和对象 ID 建立索引 我考虑
  • DB2连接授权失败原因:Java不支持安全机制

    我正在尝试使用 DB2JDBC Type4 驱动程序配置 DB2 连接 但我收到这个错误 线程 main 中的异常 com ibm db2 jcc am SqlInvalidAuthorizationSpecException jcc t4
  • 如何验证 ObjectID

    使用 Joi 模式验证 是否可以针对 MongoDB ObjectID 进行验证 像这样的事情可能很棒 id Joi ObjectId required error errorParser 我发现如果我这样做 Joi object id J
  • 使用 Greasemonkey 时存储数据

    使用 Greasemonkey 时是否有存储大量数据的好方法GM setValue只是没有削减它 那么这里有一些选项 设置服务器来保存数据 对于用户 并使用 xhr 来 创建 编辑 删除数据 谷歌应用程序 发动机 GAE http code
  • 更改启动 Java 运行时后 IntelliJ IDEA 无法在 Ubuntu 上启动

    之前 我的 IntelliJ 运行得很好 但我使用的是 java 6 所以我的项目无法使用 gradle 运行 我用命令将java切换到版本8sudo update alternatives config java 我检查了java ver
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p
  • 为 Meteor 数据创建编号列表

    有没有办法获取 Meteor 集合中项目的编号列表的 编号 我知道我可以在 html 中做到这一点 但我觉得如果我可以在 spacebars 中放置一些东西 那么样式会更容易 如果我可以使用更好的术语 请告诉我 像这样的东西 前 20 部电
  • Neo4j Desktop DB 无法启动,状态为“KILLED”

    运行 Neo4j Desktop 版本 1 0 15 尝试启动DB导致启动失败 数据库启动失败 DB database f8950fdd 6b5f 4fea 8c9f e8457ee1da9a v3 3 1 退出 状态为 已杀 检查日志 主
  • 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

    我的 mysql 服务器停止后无法启动 命令使用 sudo etc init d mysql restart Error 重新启动 mysql 通过 systemctl mysql serviceJob for mysql service
  • 使用 Tweepy 获取推文时出错

    我有一个用于获取推文的 Python 脚本 在脚本中我使用该库 Tweepy 我使用有效的身份验证参数 运行此脚本后 一些推文存储在我的 MongoDB 中 有些则被 if 语句拒绝 但我仍然收到错误 requests packages u
  • 关键字“if”如何测试一个值是真还是假?

    在 bash 脚本中 if 1 then echo Yes else echo No fi Output Yes 它表示 1 被视为真值 但在代码中 word Linux letter nuxi if echo word grep q le
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外
  • Mongoose 独特的验证不起作用。保存重复条目

    我正在开发一个 NodeJS 应用程序 其中express是框架 MongoDB是数据库 我正在使用猫鼬插件 我有一个父母模型 我已经添加了独特 真实到场 mobile 但是每当我添加相同的手机号码时 唯一性验证就会失败 除了保存重复的文档
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • Rabbitmq 忽略 Ubuntu 12 上的配置

    I have rabbitmq server从系统包安装乌班图12 无论我做什么 它似乎都会忽略任何配置文件 网络上的所有内容都表明服务器正在寻找 etc rabbitmq rabbitmq conf 但即使我创建该文件 服务器也报告没有配
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 使用 Mongoose 无法找到按 ObjectId 搜索的文档

    Campaign find client id req param client id error campaigns gt if error response error error message else for campaign i

随机推荐

  • 如何检查 MacOS 版本(GUI+CLI)

    macOS 12 是 Apple 团队的最新版本 它的代号是蒙特雷 源自蒙特雷南部海岸的一片未绘制地图的荒野地区 这是最先进的桌面操作系统 功能和美观达到了新的水平 本教程将介绍如何从桌面和命令行界面检查 macOS 版本 检查 MacOS
  • 如何在 Linux 中编译和安装最新的 Redis

    Redis 是一种开源内存数据结构存储 可用作数据库 缓存和消息代理 它以其高性能 可扩展性和易用性而闻名 在本文中 我们将指导您完成在 Linux 上编译和安装最新 Redis 版本的过程 在开始之前 请确保您拥有 Linux 服务器的管
  • 如何计算 Linux 中文件的行数

    有时您可能需要计算 Unix Linux 系统中文件的总行数 本教程帮助您通过命令行使用多种方法来统计 Linux 系统中文件的行数 计算行数wc Command The wc命令是 Unix Linux 系统的 字计数器 这是 Linux
  • 检查脚本是否在 Linux 中以 root 用户身份运行

    有时 shell 脚本需要以 root 用户身份运行才能以管理员权限执行某些任务 通常 可以使用 Sudo 命令来完成该任务 如果在某些情况下您仍然需要强制用户以 root 用户身份运行脚本 您可以向脚本添加代码来检查脚本是否以 root
  • 如何在 CentOS/RHEL 7.5 和 6.9 上安装 PHP 7.2、Apache 2.4、MySQL 5.6

    PHP团队已经发布了升级版本7 2 与 5 X 版本相比 它有许多变化和改进 本文将帮助您在 CentOS RHEL 7 6 操作系统上安装 PHP 7 Apache 2 4 和 MySQL 5 6 本教程已在CentOS 7 4上进行测试
  • 如何清除 Windows 中的 ASP.NET 临时文件

    开发 ASP NET 应用程序时 框架会编译并存储临时文件以提高性能 随着时间的推移 这些文件可能会累积并占用大量存储空间 定期清除 ASP NET 临时文件可以帮助维护您的开发环境并释放宝贵的磁盘空间 本文提供了有关如何在 Windows
  • 允许 ssm:GetParameter 的 AWS IAM 策略

    AWS Systems Manager SSM Parameter Store 提供集中式安全存储解决方案 用于管理您的配置数据 机密和应用程序设置 使用 SSM Parameter Store 时可能执行的关键操作之一是检索参数的值 在本
  • PHP 技巧:使用分隔符将字符串拆分为数组

    在 PHP 中 将字符串拆分为数组是一项常见任务 可以使用各种函数和技术来完成 这 explode 函数是一个方便高效的选项 它允许您根据分隔符将字符串拆分为数组 在本文中 我们将探讨如何在 PHP 中使用explode 函数将字符串拆分为
  • Visual Studio Code 中 Git 集成的快捷方式

    Git 是一种流行的版本控制系统 开发人员使用它来跟踪代码更改并与其他人在项目上进行协作 Visual Studio Code VS Code 具有内置的 Git 集成 可以轻松地直接从编辑器管理和提交更改 在本文中 我们将讨论 Visua
  • 如何通过 SSH 下载和上传文件

    SSH 是访问远程服务器最安全的协议 它通过通信通道提供最高级别的端到端数据安全性 这SCP 安全复制 命令使用 SSH 协议在远程和本地服务器之间复制文件 远程服务器必须有正在运行的 SSH 服务器 本教程将帮助您了解通过 SSH 协议下
  • 如何在 CentOS/RHEL 7 上创建没有 Shell 访问权限的 SFTP 用户

    本教程将帮助您在 CentOS 和 RedHat 系统上创建仅 SFTP 用户 无 ssh 访问权限 用户只能通过SFTP访问连接服务器 并允许访问指定目录 用户无法通过 SSH 访问服务器 按照以下教程创建仅限 sftp 的帐户 第 1
  • 如何在 Linux 中编译和运行 C/C++ 程序

    C 是一种强大的结构化编程语言 用于开发系统软件 根据设计 C 提供了可以有效映射到典型机器指令的结构 它是由丹尼斯 里奇在贝尔实验室 C 程序源是自由格式的文本 使用分号作为语句终止符 使用大括号对条件 函数或循环等语句块进行分组 C 是
  • 如何在 CentOS 7 上安装 Drupal

    Drupal 是全球领先的开源 CMS 平台之一 它灵活 可扩展 可用于构建不同类型的网站 从小型个人博客到大型企业 政治和政府网站 在本教程中 我们将解释如何在 CentOS 7 上安装 Drupal 8 6 安装 Drupal 的方法有
  • 如何删除 Docker 容器、映像、卷和网络

    Docker 是一个开源容器化平台 允许您快速构建 测试和部署应用程序作为几乎可以在任何地方运行的便携式容器 使用 Docker 时 您可以快速积累大量未使用的对象 这些对象会消耗大量磁盘空间并使 Docker 命令生成的输出变得混乱 Do
  • 如何删除 Git 中未跟踪的文件

    Git 工作目录中的文件可以是跟踪的 也可以是非跟踪的 跟踪的文件是 Git 知道的已添加和提交的文件 跟踪的文件可以是未修改的 已修改的或暂存的 工作目录中的所有其他文件都未被跟踪 并且 git 不知道这些文件 有时 您的 git 工作目
  • 如何在 Bash 中逐行读取文件

    在编写 Bash 脚本时 有时您会发现自己需要逐行读取文件 例如 您可能有一个文本文件 其中包含应由脚本处理的数据 在本教程中 我们将讨论如何在 Bash 中逐行读取文件 逐行读取文件语法 逐行读取文件的最通用语法如下 while IFS
  • 如何在 CentOS 8 上安装 MySQL

    MySQL是最流行的开源关系数据库管理系统 最新版本的 MySQL 数据库服务器 8 0 版可从默认的 CentOS 8 存储库安装 MySQL 8 0引入了许多新功能和更改 这使得一些应用程序与该版本不兼容 在选择要安装的 MySQL 版
  • 如何在 Python 中删除(移除)文件和目录

    Python 有一些内置模块 允许您删除文件和目录 本教程介绍如何使用以下函数删除文件和目录os pathlib and shutil模块 删除文件 在Python中你可以使用os remove os unlink pathlib Path
  • 如何在CentOS上安装RPM包

    RPM 是 Red Hat 及其衍生产品 例如 CentOS 和 Fedora 使用的打包系统 CentOS 官方存储库包含数千个 RPM 软件包 可以使用yum命令行实用程序 通过启用适当的存储库 可以轻松安装标准 CentOS 存储库中
  • 如何在 Ubuntu 18.04 上安装 MongoDB

    MongoDB 是一个免费的开源文档数据库 它属于 NoSQL 数据库家族 与 MySQL 和 PostgreSQL 等传统的基于表的 SQL 数据库不同 在 MongoDB 中 数据存储在灵活的 类似 JSON字段可能因文档而异的文档 它