Установка и настройка MongoDB на Ubuntu 20.04

Требования
- Сервер под управлением Ubuntu 20.04.
- Настроен root‑пароль или доступ к sudo от имени пользователя с правами администратора.
Короткая схема установки
- Установить пакет gnupg.
- Добавить GPG‑ключ MongoDB.
- Добавить официальный репозиторий MongoDB для нужной версии.
- Обновить список пакетов и установить mongodb-org.
- Запустить и включить службу mongod.
- Включить аутентификацию и создать админ‑пользователя.
Установка MongoDB
По умолчанию последняя версия MongoDB может отсутствовать в стандартных репозиториях Ubuntu 20.04, поэтому добавим официальный репозиторий MongoDB.
Сначала установите пакет gnupg:
apt-get install gnupg -yДалее загрузите и добавьте GPG‑ключ MongoDB:
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | apt-key add -Добавьте репозиторий MongoDB (в примере используется канал для версии 4.2):
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.2.listЗатем обновите список пакетов и установите MongoDB:
apt-get update -y
apt-get 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; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-05-15 05:30:39 UTC; 18s ago
Docs: https://docs.mongodb.org/manual
Main PID: 106996 (mongod)
Memory: 76.0M
CGroup: /system.slice/mongod.service
??106996 /usr/bin/mongod --config /etc/mongod.conf
May 15 05:30:39 ubuntu2004 systemd[1]: Started MongoDB Database Server.
May 15 05:30:48 ubuntu2004 systemd[1]: /lib/systemd/system/mongod.service:11: PIDFile= references a path below legacy directory /var/run/, upd>
lines 1-11/11 (END)
Проверить версию и адрес сервера можно командой:
mongo --eval 'db.runCommand({ connectionStatus: 1 })'Пример вывода:
MongoDB shell version v4.2.6
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("e1575445-f441-4b30-a5d7-4cf68852e68f") }
MongoDB server version: 4.2.6
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
Конфигурация MongoDB
Файл конфигурации MongoDB: /etc/mongod.conf. По умолчанию аутентификация отключена и любой локальный пользователь может получить доступ ко всем базам данных. Для боевой эксплуатации рекомендуется включить авторизацию.
Отредактируйте /etc/mongod.conf, например через nano:
nano /etc/mongod.confДобавьте или отредактируйте секцию security так, чтобы она содержала:
security:
authorization: enabled
Сохраните файл и перезапустите службу, чтобы применить изменения:
systemctl restart mongodВажно: после включения authorization вы должны создать административного пользователя, иначе потеряете доступ.
Создание администратора MongoDB
После включения аутентификации создайте администратора:
- Откройте mongo‑консоль:
mongoВы увидите стартовый вывод shell. Переключитесь на базу admin:
> use adminСоздайте админ‑пользователя и задайте пароль (замените “password” на надёжный пароль):
> db.createUser( { user: "admin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )Ожидаемый ответ:
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
Выйдите из консоли:
> quit()Проверка аутентификации
Подключитесь под созданным пользователем:
mongo -u admin -p --authenticationDatabase adminСистема попросит ввести пароль:
MongoDB shell version v4.2.6
Enter password:
После успешного ввода вы попадёте в shell. Проверьте текущую базу и список пользователей:
> use admin
> show usersПример ответа на show users показывает созданного пользователя и поддерживаемые механизмы аутентификации, например SCRAM‑SHA‑1 и SCRAM‑SHA‑256.
Безопасность и hardening
Important: эти рекомендации повышают безопасность и подходят для боевой среды.
- Всегда используйте сильные пароли и храните их в менеджере секретов.
- Включите авторизацию (authorization) и, при необходимости, ограничьте механизмы аутентификации до SCRAM‑SHA‑256.
- Запретите внешний доступ к порту 27017 на уровне брандмауэра (ufw / iptables) и разрешите доступ только из доверенных сетей.
- Включите шифрование соединений TLS/SSL для внешних подключений.
- Настройте резервное копирование (mongodump / filesystem snapshots) и проверьте процедуру восстановления.
- Ограничьте системные привилегии процесса mongod; запускайте от выделённого пользователя и следите за правами на каталоги данных.
Проверка и отладка — быстрый чеклист
- Служба запущена: systemctl status mongod
- Порт слушает: ss -ltnp | grep 27017
- Логи: journalctl -u mongod -e или /var/log/mongodb/mongod.log
- Подключение: mongo –eval ‘db.runCommand({ connectionStatus: 1 })’
- Пользователи: в mongo shell используйте show users в базе admin
Альтернативные подходы
- Использовать MongoDB Atlas (облачное решение) вместо самостоятельного хостинга — быстрее в развёртывании и с встроенным бэкапом.
- Если нужна более новая версия для Ubuntu 20.04, переключитесь на репозиторий, предназначенный для focal или используйте официальные пакеты для вашей версии ОС.
- Для простых тестовых стендов можно установить mongodb‑package из стандартных репозиториев Ubuntu, но для боевой эксплуатации рекомендуются официальные пакеты mongodb-org.
Ролевые чеклисты
Администратор базы:
- Создал администратора и проверил show users.
- Настроил резервное копирование и план восстановления.
- Настроил мониторинг и оповещения.
DevOps инженер:
- Настроил автозапуск systemd и мониторинг состояния.
- Ограничил доступ по брандмауэру к порту 27017.
- Настроил логирование и ротацию логов.
Разработчик:
- Подключился к базе с учётными данными из безопасного хранилища.
- Проверил корректность индексов и производительность запросов на тестовой нагрузке.
Типичные проблемы и шаги устранения
- Служба не запускается — проверьте журналы: journalctl -u mongod -xe и /var/log/mongodb/mongod.log.
- Порт недоступен извне — проверьте правила ufw/iptables и настройки bind в /etc/mongod.conf (listenAddress).
- После включения authorization потеряли доступ — перезапустите в режиме восстановления или временно отключите authorization, чтобы создать пользователя локально (только в контролируемой среде).
Критерии приёмки
- mongod запущен и активен (systemctl status mongod показывает active)
- Подключение под админом успешно: mongo -u admin -p –authenticationDatabase admin
- show users возвращает созданного админа
- Входящие подключения к порту 27017 ограничены брандмауэром
Короткое резюме
В этом руководстве вы узнали, как установить MongoDB на Ubuntu 20.04, включить авторизацию, создать администратора и выполнить базовую проверку работоспособности. Рекомендуется дополнительно настроить TLS, бэкапы и мониторинг для боевого окружения. Для подробной документации и вариантов конфигурации смотрите официальную документацию MongoDB: https://docs.mongodb.org/manual
Похожие материалы
Компьютер не включается — пошаговый ремонт
Баланс в фотографии: виды и приёмы
Как сохранить и выйти из Vi
Как почистить контроллер PS4 — полный гайд
Как печатать в Word: советы и макросы