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

Установка и базовая работа с MongoDB на Rocky Linux 9

• 8 min read • Базы данных • Обновлено 21 Nov 2025
MongoDB на Rocky Linux 9 — установка и базовые команды
MongoDB на Rocky Linux 9 — установка и базовые команды

В этой инструкции показано, как установить MongoDB 6.0 на сервер Rocky Linux 9, оптимизировать систему для продакшена, включить аутентификацию и выполнить базовые CRUD‑операции через mongosh. Включены чек‑листы, рекомендации по безопасности и пошаговый SOP для запуска и валидации.

Важно: перед внесением изменений сделайте резервную копию конфигураций и, при возможности, тестируйте изменения на стенде.

О чём эта статья

  • Установка MongoDB и клиента mongosh.
  • Оптимизация ОС (THP, ulimit, sysctl).
  • Создание администратора и пользователей, включение авторизации.
  • Примеры CRUD: вставка, поиск, обновление, удаление.
  • Рекомендации по безопасности, чек‑листы для ролей и SOP для быстрого запуска.

Основные варианты поисковых запросов (SEO intent)

  • установка MongoDB на Rocky Linux 9
  • как поставить MongoDB 6 на Rocky 9
  • настройка mongod на Rocky
  • mongosh примеры CRUD
  • оптимизация Linux для MongoDB

Введение

логотип MongoDB установка

MongoDB — это открытая кроссплатформенная распределённая NoSQL база данных. Вместо таблиц она хранит данные в гибких документах BSON (бинарный JSON). MongoDB поддерживает автоматический failover, репликацию, шардинг для горизонтального масштабирования и геораспределённое развёртывание.

В этой инструкции вы установите MongoDB Community 6.0 на Rocky Linux 9, оптимизируете систему для работы СУБД и изучите базовые операции через mongosh. Рекомендуется иметь доступ к серверу с правами sudo.

Требования

  • Сервер Rocky Linux 9 (в примере hostname — mongodb-rocky).
  • Непривилегированный пользователь с sudo или root‑доступ.

Добавление официального репозитория MongoDB

MongoDB распространяется через официальный репозиторий. В примере используется версия 6.0.

Создайте файл репозитория:

sudo nano /etc/yum.repos.d/mongodb-org-6.0.repo

Добавьте в файл следующие строки:

[mongodb-org-6.0]  
name=MongoDB Repository  
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/  
gpgcheck=1  
enabled=1  
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

Сохраните и выйдите. Проверьте список репозиториев:

sudo dnf repolist

Вы увидите, что репозиторий mongodb-org-6.0 добавлен.

список репозиториев с mongodb

Установка MongoDB Server и клиента mongosh

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

sudo dnf install mongodb-org mongodb-mongosh

Подтвердите «y», когда это потребуется. Примите GPG‑ключ, если система запросит подтверждение.

установка mongodb через dnf

Запустите и проверьте сервис mongod:

sudo systemctl start mongod
sudo systemctl status mongod

Если сервис запущен и включён, вы увидите соответствующий статус.

проверка сервиса mongod

Подготовка и оптимизация системы для MongoDB

Для стабильной работы MongoDB на Linux нужно выполнить ряд системных настроек: отключение Transparent Huge Pages (THP), увеличение лимитов ulimit, корректировка виртуальной памяти через sysctl.

Отключение Transparent Huge Pages (THP)

THP может негативно влиять на производительность MongoDB. Отключим THP через systemd‑сервис, чтобы изменения сохранялись после перезагрузки.

Создайте сервис:

sudo nano /etc/systemd/system/disable-thp.service

Содержимое файла:

[Unit]  
Description=Disable Transparent Huge Pages (THP)  
  
[Service]  
Type=simple  
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"  
  
[Install]  
WantedBy=multi-user.target

Загрузите systemd заново и включите сервис:

sudo systemctl daemon-reload
sudo systemctl enable disable-thp
sudo systemctl start disable-thp

После включения сервис автоматически будет отключать THP при загрузке.

отключение THP через systemd

Увеличение ulimit для mongod

По умолчанию ограничение процессов/файлов (ulimit) невысоко. MongoDB требует больше открытых файлов и процессов. Создайте конфиг:

sudo nano /etc/security/limits.d/mongodb.conf

Добавьте:

mongod soft nproc 64000  
mongod hard nproc 64000  
mongod soft nofile 64000  
mongod hard nofile 64000

Это задаст лимиты для системного пользователя mongod.

Настройка sysctl

Добавьте параметры в /etc/sysctl.conf для увеличения лимитов виртуальной памяти и снижения свопинга:

sudo nano /etc/sysctl.conf

Добавьте:

fs.file-max = 2097152  
vm.max_map_count = 262144  
vm.swappiness = 1

Примените изменения перезагрузкой:

sudo reboot

После перезагрузки сервер будет запущен с THP отключённым, ulimit для mongod — 64000, vm.max_map_count — 262144.

sysctl и ulimit настроены

Настройка администратора MongoDB и включение авторизации

После установки создадим административного пользователя и включим authorization в конфиге mongod.

Подключитесь к mongosh на сервере:

mongosh

подключение к mongosh

Отключим мониторинг, включённый по умолчанию:

db.disableFreeMonitoring()

Переключитесь в базу admin и создайте администратора. Рекомендуется использовать passwordPrompt() для безопасного ввода пароля:

use admin

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

После создания получите подтверждение { ok: 1 }.

создание администратора

Выйдите из mongosh (Ctrl+D или quit). Откройте конфиг MongoDB и включите authorization:

sudo nano /etc/mongod.conf

Найдите секцию security и добавьте:

security:  
    authorization: enabled

Перезапустите сервис:

sudo systemctl restart mongod

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

Вариант 1 — войти в mongosh и выполнить db.auth:

mongosh
use admin
db.auth("myAliceAdmin", passwordPrompt())

Вариант 2 — подключиться одной командой:

mongosh --port 27017 --authenticationDatabase \
    "admin" -u "myAliceAdmin" -p

Введите пароль при запросе.

аутентификация mongosh

Создание пользователя приложения и базы данных

После включения авторизации создайте пользователя для приложения с ограниченными правами.

Переключитесь в нужную базу и создайте пользователя:

use testdb

db.createUser(  
  {  
    user: "myTestUser",  
    pwd:  passwordPrompt(),  
    roles: [ { role: "readWrite", db: "testdb" },  
             { role: "read", db: "reporting" } ]  
  }  
)

Проверьте список пользователей:

use admin
db.system.users.find()

Выйдите и подключитесь от имени myTestUser:

mongosh --port 27017 -u "myTestUser" \
    --authenticationDatabase "testdb" -p

db.runCommand({connectionStatus : 1})

подключение myTestUser

Вставка и поиск данных: базовые CRUD‑операции

Переключитесь на testdb:

use testdb

insertOne — вставка одного документа

db.movies.insertOne(  
  {  
    title: "The Hobbit",  
    genres: [ "Adventure", "Fantasy" ],  
    runtime: 172,  
    rated: "R",  
    year: 2012,  
    directors: [ "Peter Jackson" ],  
    cast: [ "Martin Freeman", "Ian McKellen", "Richard Armitage" ],  
    type: "movie"  
  }  
)

После запроса вы получите подтверждение acknowledged: true.

insertOne пример

show collections и find

show collections

db.movies.find( {} )

Эти команды покажут коллекции и содержимое коллекции movies.

список коллекций и данные

insertMany — вставка нескольких документов

db.movies.insertMany([  
   {  
      title: "The Lord of the Rings",  
      genres: [ "Action", "Adventure", "Drama" ],  
      runtime: 240,  
      rated: "PG-13",  
      year: 2001,  
      directors: [ "Peter Jackson" ],  
      cast: [ "Elijah Wood", "Ian McKellen", "Orlando Bloom" ],  
      type: "movie"  
    },  
    {  
      title: "Harry Potter",  
      genres: [ "Adventure", "Family", "Fantasy" ],  
      runtime: 140,  
      rated: "R",  
      year: 2007,  
      directors: [ "David Yates" ],  
      cast: [ "Daniel Radcliffe", "Emma Watson", "Rupert Grint" ],  
      type: "movie"  
    }  
])

Поиск по полю и оператор $in

db.movies.find( { directors: "Peter Jackson" })

// Поиск жанров с использованием $in

db.movies.find( { genres: { $in: [ "Action", "Family" ] } } )

поиск по режиссёру и оператор in

Оператор $gte

Добавим ещё один фильм и выберем те, что вышли после 2001 года и относятся к Action:

db.movies.insertOne(  
  {  
    title: "Transformers",  
    genres: [ "Adventure", "Action", "Sci-Fi" ],  
    runtime: 150,  
    rated: "PG-13",  
    year: 2007,  
    directors: [ "Michael Bay" ],  
    cast: [ "Shia LaBeouf", "Megan Fox", "Josh Duhamel" ],  
    type: "movie"  
  }  
)

// Поиск

db.movies.find( { genres: "Action", "year": { $gte: 2001 } } )

В результате появятся фильмы 2001+ с жанром Action.

пример $gte

Обновление данных

Есть два подхода: частичное обновление (updateOne) и полная замена документа (replaceOne).

updateOne — частичное обновление

db.movies.updateOne( { title: "Transformers" },  
{  
  $set: {  
    rated: "R"  
  }  
})

Ожидайте matchedCount: 1 и modifiedCount: 1.

updateOne пример

replaceOne — полная замена документа

db.movies.replaceOne(  
  { title: "Transformers" },  
  {  
    title: "Transformers: Dark of the Moon",  
    genres: [ "Adventure", "Action", "Sci-Fi" ],  
    runtime: 160,  
    rated: "PG-13",  
    year: 2011,  
    directors: [ "Michael Bay" ],  
    cast: [ "Shia LaBeouf", "Rosie Huntington-Whiteley", "Tyrese Gibson" ],  
    type: "movie"  
  }  
)

Проверьте, что замена прошла успешно:

db.movies.find( { title: "Transformers: Dark of the Moon" })

replaceOne пример

Удаление данных и очистка

deleteMany и deleteOne

// Удалить все документы с заданным title

db.movies.deleteMany( { title: "Transformers: Dark of the Moon" } )

// Удалить первый попавшийся документ с указанным cast

db.movies.deleteOne( { cast: "Ian McKellen" } )

До и после удаления видно изменение количества документов.

до удаления

после удаления одного

Удаление пользователей и базы данных

Для удаления пользователей базы нужно иметь роль root у админа. Присвойте root‑роли, если нужно:

use admin
db.auth("myAliceAdmin", passwordPrompt())
db.grantRolesToUser("myAliceAdmin", ["root"]);

Удаление всех пользователей из testdb и самой базы:

use testdb
db.runCommand( { dropAllUsersFromDatabase: 1 } )

db.dropDatabase()

Проверьте список баз и пользователей:

use admin
show dbs

db.system.users.find()

удаление базы и пользователей

проверка пользователей

Рекомендации по безопасности и эксплуатационная жёсткость

  • Всегда включайте authorization и используйте сильные пароли.
  • По возможности включайте TLS между клиентами и серверами MongoDB.
  • Отключайте внешние сетевые интерфейсы или используйте firewall для ограничения доступа к порту 27017.
  • Регулярно обновляйте MongoDB до поддерживаемой версии и проверяйте список CVE в официальной документации.
  • Используйте репликацию и регулярные бэкапы.
  • Минимизируйте права пользователей: принцип наименьших привилегий.

Быстрые шаги для включения TLS (вкратце)

  1. Сгенерируйте сертификаты для сервера и клиентов.
  2. Поместите сертификаты в защищённый каталог, доступный mongod.
  3. Обновите /etc/mongod.conf: добавьте net.tls.certificateKeyFile и net.tls.CAFile.
  4. Перезапустите mongod и протестируйте подключение через mongosh с TLS флагами.

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

Когда MongoDB может не подойти

  • Когда нужны сложные транзакционные данные с сильными связями и строгими ACID требованиями на уровне множества таблиц — реляционные СУБД часто удобнее.
  • Для аналитических запросов на огромных объёмах данных OLAP хранилища и специализированные колоночные СУБД дают лучшую производительность.
  • Если вам нужна строгая согласованность во всех операциях и простая модель запросов SQL — реляционные БД остаются предпочтительными.

Альтернативные подходы и миграция

  • Для документно‑ориентированных данных: Couchbase, DocumentDB (в облаке).
  • Для требований SQL: PostgreSQL с JSONB может быть компромиссом — хранить документы и пользоваться SQL‑мощью.
  • Для миграции данных: используйте mongodump/mongorestore или MongoDB Database Tools; для онлайн‑миграций рассмотрите change streams и ETL‑пайплайны.

Чек‑лист по ролям

Администратор (SRE/DevOps):

  • Добавить репозиторий и установить пакеты.
  • Отключить THP и настроить ulimit/sysctl.
  • Настроить systemd и автозапуск mongod.
  • Настроить TLS и firewall.
  • Настроить мониторинг и бэкапы.

Разработчик приложения:

  • Создать пользователя с минимальными правами.
  • Подключиться через mongosh/драйвер с использованием аутентификации и TLS.
  • Использовать индексы для частых запросов.
  • Минимизировать размер документов и избегать больших массивов в одном документе.

DBA/Архитектор:

  • Оценить необходимость репликации и шардинга.
  • Проектировать модель данных под запросы (query‑driven design).
  • Планировать ёмкость и SLI/SLO для времени отклика.

SOP — пошаговый плейбук для быстрого развертывания (короткая версия)

  1. Подготовка VM/серверов с Rocky Linux 9.
  2. Добавить репозиторий mongodb-org-6.0.
  3. Установить mongodb-org и mongodb-mongosh.
  4. Отключить THP, настроить ulimit и sysctl.
  5. Перезагрузить сервер.
  6. Запустить mongod и проверить статус.
  7. Создать администратора в mongosh и включить authorization в /etc/mongod.conf.
  8. Настроить firewall и при необходимости TLS.
  9. Настроить мониторинг и бэкап.
  10. Тестировать подключение и выполнить smoke‑test CRUD.

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

  • Сервис mongod в статусе active (running) после перезагрузки.
  • THP отключено (проверяется содержимым /sys/kernel/mm/transparent_hugepage/enabled).
  • ulimit для mongod >= 64000 (проверяется через pgrep/pid и /proc//limits).
  • Успешная аутентификация администратора и пользователя приложения.
  • Успешное выполнение CRUD‑скрипта (insert/find/update/delete).

Факт‑бокс: ключевые числа и параметры

  • Версия примера: MongoDB 6.0.
  • Порт по умолчанию: 27017.
  • Рекомендованный ulimit (nofile, nproc): 64000.
  • fs.file-max в примере: 2097152.
  • vm.max_map_count в примере: 262144.
  • vm.swappiness: 1 (минимизировать использование swap).

Мини‑методология безопасного развёртывания

  1. Подготовьте окружение: сеть, ACL, firewall.
  2. Настройте OS‑параметры (THP/ulimit/sysctl).
  3. Установите MongoDB и базовые утилиты.
  4. Создайте администратора, включите authorization.
  5. Включите TLS и ограничьте сетевой доступ.
  6. Настройте мониторинг и бэкапы, проверьте процедуру восстановления.

Типичные ошибки и когда откатить изменения

  • Если mongod не запускается после изменения конфигурации, проверьте /var/log/mongodb/mongod.log и откатите последние изменения в /etc/mongod.conf.
  • Если после отключения THP наблюдаются неожиданные эффекты (редко), временно отключите сервис disable-thp и проанализируйте влияние.
  • После настройки TLS используйте тестовые клиенты до массовых изменений, иначе приложения перестанут подключаться.

Глоссарий в одну строку

  • mongod — демон сервера MongoDB.
  • mongosh — современная интерактивная оболочка MongoDB.
  • THP — Transparent Huge Pages, механизм управления большими страницами памяти.
  • ulimit — пользовательские лимиты ядра Linux на процессы/файлы.
  • BSON — бинарный формат JSON, используемый MongoDB.

Советы по тестированию и SLI/SLO (качественно)

  • SLI: % успешных запросов CRUD и 95‑й процентиль времени ответа на ключевые запросы.
  • SLO: поддерживать 95‑й процентиль времени ответа ниже заранее оговорённого значения для интерактивных операций.
  • Тесты: прогоните нагрузку с realistic query patterns и проверьте влияние индексов.

Миграция и совместимость версий

  • При обновлении между мажорными версиями придерживайтесь официального руководства MongoDB.
  • Используйте mongodump/mongorestore для бэкап/восстановления или mongoexport/mongoimport для табличных выгрузок.
  • Перед обновлением тестируйте на стейджинге и проверьте совместимость драйверов в ваших приложениях.

Краткое объявление для команды (100–200 слов)

Развернута MongoDB 6.0 на Rocky Linux 9. Проведены базовые оптимизации ОС (отключение THP, ulimit, sysctl). Включена авторизация и создан администратор. Для приложений создан пользователь с минимальными правами. Рекомендуется настроить TLS, firewall и мониторинг. Перед переходом в продакшн проверьте бэкап/восстановление и нагрузочное тестирование. Документация с командами и чек‑листами доступна в репозитории.

Краткое резюме

Вы установили MongoDB 6.0, оптимизировали ОС, создали администратора и пользователя приложения, отработали базовые CRUD‑операции. Дальше: настроить 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 быстро