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

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) и регулярные бэкапы.
Короткий план миграции с другой СУБД:
- Оцените структуру данных и денормализуйте, где это необходимо.
- Экспортируйте данные в JSON/CSV и сделайте пробную загрузку в тестовую реплику MongoDB.
- Проведите нагрузочное тестирование и скорректируйте индексы.
- Переключите запись приложений постепенно (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.
- Проверяйте совместимость репозитория с вашей версией дистрибутива.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента