Гид по технологиям

Установка MongoDB на Ubuntu 22.04

• 4 min read • Базы данных • Обновлено 28 Nov 2025
Установка MongoDB на Ubuntu 22.04
Установка MongoDB на Ubuntu 22.04

Иллюстрация: логотип MongoDB и схема хранения данных в документах JSON

MongoDB — свободная, открытая и одна из самых популярных NoSQL СУБД. Она хранит данные в формате JSON-подобных документов, а не в традиционных реляционных таблицах. MongoDB не требует заранее заданной схемы; структуру данных можно изменять по ходу развития приложения. База написана на C++ и обеспечивает масштабируемость, высокую производительность и отказоустойчивость.

Что нужно иметь перед началом

  • Сервер с Ubuntu 22.04.
  • Настроенный root-доступ или учётная запись с sudo.
  • Доступ в интернет с разрешённым выходом к repo.mongodb.org и mongodb.org (для GPG-ключа).

Важно: будьте готовы сохранить пароли и конфигурационные файлы в защищённом месте.

Добавление репозитория MongoDB

По умолчанию пакет MongoDB может отсутствовать в стандартных репозиториях Ubuntu, поэтому добавим официальный репозиторий MongoDB для APT.

Сначала установите необходимые зависимости:

apt install wget gnupg2 curl -y

Затем загрузите и добавьте GPG-ключ MongoDB:

curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -

Добавьте репозиторий в APT (команда из примера использует ветку mongodb-org/4.4 и дистрибутив focal):

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list

Примечание о совместимости: в репозитории в примере указан focal (Ubuntu 20.04). Для долгосрочной стабильности проверьте на сайте MongoDB рекомендуемую ветку для Ubuntu 22.04 (jammy) и используйте соответствующий путь репозитория, если доступна более новая поддерживаемая версия.

Обновите кэш пакетов:

apt update -y

Установка MongoDB

Установите пакет mongodb-org:

apt install mongodb-org -y

Запустите службу и включите автозапуск:

systemctl start mongod
systemctl enable mongod

Проверьте статус службы:

systemctl status mongod

Пример ожидаемого вывода:

? mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-05-28 15:04:49 UTC; 7s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 27422 (mongod)
     Memory: 63.3M
        CPU: 967ms
     CGroup: /system.slice/mongod.service
             ??27422 /usr/bin/mongod --config /etc/mongod.conf

May 28 15:04:49 ubuntu2204 systemd[1]: Started MongoDB Database Server.

Проверка версии MongoDB:

mongo --version

Ожидаемый фрагмент вывода (пример):

MongoDB shell version v4.4.14
Build Info: {
    "version": "4.4.14",
    "gitVersion": "0b0843af97c3ec9d2c0995152d96d2aad725aab7",
    "openSSLVersion": "OpenSSL 1.1.1l  24 Aug 2021",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "ubuntu2004",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

Проверка информации о подключении:

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

Пример ожидаемого вывода:

MongoDB shell version v4.4.14
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("44560246-9673-418a-95c9-112bba345f4f") }
MongoDB server version: 4.4.14
{
    "authInfo" : {
        "authenticatedUsers" : [ ],
        "authenticatedUserRoles" : [ ]
    },
    "ok" : 1
}

Создание административного пользователя

По умолчанию MongoDB может позволять локальные подключения без аутентификации. Чтобы закрыть сервер, создайте администратора и включите авторизацию.

Зайдите в shell MongoDB:

mongo

Переключитесь на базу admin:

use admin

Создайте администратора (замените user и пароль на безопасные значения):

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

Ожидаемый вывод:

Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

Теперь включите авторизацию в конфигурации:

nano /etc/mongod.conf

Добавьте или измените блок security:

security:
  authorization: enabled

Сохраните файл и перезапустите сервис:

systemctl restart mongod

Проверка аутентификации

Подключитесь с указанием имени пользователя (будет запрошен пароль):

mongo -u admin -p --authenticationDatabase admin

Вы увидите запрос пароля и затем приглашение shell при успешной авторизации.

Чтобы показать базы данных:

> show dbs

Пример вывода:

admin   0.000GB
config  0.000GB
local   0.000GB

Безопасность и эксплуатация — рекомендации

Important: Не используйте простой пароль и не оставляйте административный аккаунт с дефолтными данными в продакшене.

Рекомендации по hardening:

  • Ограничьте bind_ip в /etc/mongod.conf, чтобы слушать только нужные интерфейсы (например, 127.0.0.1 или приватный IP).
  • Включите TLS/SSL для шифрования трафика между клиентами и сервером. Храните сертификаты вне общедоступных директорий.
  • Используйте firewall (ufw/iptables) — разрешайте доступ к 27017 только с доверенных хостов.
  • Отключите BSON-экспорты и ненужные сетевые модули, если они не используются.
  • Настройте аудит и логирование, чтобы иметь историю действий пользователей.
  • Для высокой доступности используйте репликацию (replica set) и регулярные бэкапы.

Короткий план миграции с другой СУБД:

  1. Оцените структуру данных и денормализуйте, где это необходимо.
  2. Экспортируйте данные в JSON/CSV и сделайте пробную загрузку в тестовую реплику MongoDB.
  3. Проведите нагрузочное тестирование и скорректируйте индексы.
  4. Переключите запись приложений постепенно (canary/blue-green).

Контрольные списки по ролям

Системному администратору:

  • Проверить, что mongod запущен и включён автозапуск.
  • Настроить резервное копирование и мониторинг.
  • Ограничить сетевой доступ к порту 27017.

Разработчику:

  • Создать читающих/пишущих пользователей с минимально необходимыми привилегиями.
  • Настроить индексы и провести профилирование запросов.

Специалисту по безопасности:

  • Настроить TLS и аудит.
  • Проверить отсутствие открытых публичных портов.
  • Протестировать восстановление из бэкапа.

Критерии приёмки

  • mongod active (running).
  • mongo –eval ‘db.runCommand({ connectionStatus: 1 })’ возвращает “ok” : 1.
  • Вход под admin требует пароль и проходит успешно.
  • Порты сервера закрыты для публичного доступа, кроме доверенных хостов.

Набор тестовых сценариев

  • Установка пакета проходит без ошибок.
  • Служба запускается и остаётся в состоянии running после перезапуска сервера.
  • Аутентификация не позволяет подключиться без валидных учётных данных.
  • После включения TLS соединения без сертификата отклоняются.

Краткий глоссарий (одно предложение)

  • MongoDB — документо-ориентированная СУБД, хранящая коллекции документов BSON.
  • mongod — демонический процесс сервера MongoDB.
  • mongo — клиентская оболочка (shell) для работы с сервером.
  • replica set — набор экземпляров mongod для отказоустойчивости и репликации.
  • sharding — горизонтальное разделение данных для масштабирования.

Заключение

Поздравляем — MongoDB установлена и базовая защита включена. Дальше: настройте TLS, создайте дополнительные сервисные аккаунты и интегрируйте мониторинг и бэкапы для надёжной эксплуатации.

Короткое объявление: следуйте инструкциям в этой статье для быстрого развёртывания MongoDB на Ubuntu 22.04; применяйте рекомендации по безопасности перед вводом в продуктив.

Сводка ключевых рекомендаций:

  • Всегда создавайте админ-учётную запись и включайте authorization.
  • Ограничивайте сетевой доступ и используйте TLS.
  • Проверяйте совместимость репозитория с вашей версией дистрибутива.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро