Установка и конфигурация MongoDB 3.2 на CentOS 7
Что такое MongoDB
MongoDB — это документно-ориентированная NoSQL‑СУБД с высокой производительностью, доступностью и автоматическим масштабированием. Вместо таблиц она хранит документы в формате BSON (похожем на JSON). MongoDB впервые появилась в 2009 году. В настоящее время её разрабатывает компания MongoDB, Inc.
Важно: NoSQL означает, что MongoDB не использует SQL для запросов и манипуляции данными в привычном реляционном виде. Кратко — документы, коллекции, репликация и шардинг.
Предварительные требования
- Сервер с CentOS 7
- Доступ под root или эквивалентные права sudo
- Доступ в интернет для загрузки репозитория и пакетов
Что мы сделаем:
- Добавим репозиторий MongoDB.
- Установим MongoDB.
- Исправим типичные ошибки (ulimit).
- Создадим администратора.
- Включим аутентификацию и проверим работу.
Шаг 1 — Добавление репозитория MongoDB в CentOS
Подключитесь к серверу CentOS 7 под учётной записью root:
ssh [email protected]Перейдите в каталог с репозиториями yum и создайте файл mongodb-org-3.2.repo с помощью vim или вашего любимого редактора:
cd /etc/yum.repos.d/
vim mongodb-org-3.2.repoВставьте в файл конфигурацию репозитория:
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.ascСохраните файл и выйдите из редактора.
Шаг 2 — Установка MongoDB
Проверьте список репозиториев, чтобы убедиться, что репозиторий MongoDB доступен:
yum repolistВ списке вы должны увидеть mongodb-org-3.2.

Установите пакет mongodb-org:
yum -y install mongodb-orgПосле установки запустите службу:
systemctl start mongodПроверьте, что порт 27017 прослушивается и служба активна:
netstat -plntusystemctl status mongod
Шаг 3 — Исправление ошибки с ulimit
Если вы войдёте в mongo shell командой:
mongoвозможно, увидите предупреждение вида:
** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000...Пояснение: ulimits (user limits) ограничивают количество процессов и открытых файлов для пользователя. В CentOS 7 MongoDB запускается от пользователя mongod. Чтобы устранить предупреждение, увеличим лимиты в /etc/security/limits.conf.
Откройте файл:
cd /etc/security/
vim limits.confДобавьте в конец файла:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000Сохраните файл. Примените системные параметры:
sysctl -pПерезапустите MongoDB и проверьте shell снова:
systemctl restart mongod
mongoОшибка должна исчезнуть.
Шаг 4 — Создание администратора MongoDB
Откройте mongo shell:
mongoПереключитесь на базу admin:
use adminСоздайте пользователя admin с ролью userAdminAnyDatabase (в примере используется простой пароль; на боевом сервере используйте сильный пароль или систему управления секретами):
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)Проверьте создание пользователя:
show users
Пользователь-администратор создан.
Шаг 5 — Включение аутентификации в MongoDB
Чтобы защитить данные, включите аутентификацию, чтобы доступ к данным требовал учётной записи с соответствующими правами.
В старых установках CentOS 7 служба MongoDB может запускаться через init-скрипт в /etc/init.d/. Отредактируйте этот скрипт, чтобы добавить опцию –auth.
Откройте init-скрипт:
cd /etc/init.d/
vim mongodНайдите строку с переменной OPTIONS и добавьте опцию –auth, чтобы получилось:
OPTIONS=" --auth -f $CONFIGFILE"Сохраните изменения. Обновите конфигурацию systemd и перезапустите службу:
systemctl daemon-reload
systemctl restart mongodПроверка: войдите в mongo shell и попытайтесь показать пользователей в базе admin:
mongo
use admin
show usersВы увидите сообщение об ошибке, связанное с правами. Авторизуйтесь командой db.auth():
db.auth('admin', 'admin123')После успешной аутентификации команда show users вернёт список пользователей и ролей.

Поздравляем — MongoDB 3.2 установлена и настроена на CentOS 7.
Типичные проблемы и рекомендации по устранению
- Невозможно подключиться по сети: проверьте firewalld/iptables и убедитесь, что порт 27017 открыт для нужных адресов.
- Ошибка прав доступа к файлам: убедитесь, что каталог данных и логов принадлежат пользователю mongod (обычно /var/lib/mongo и /var/log/mongodb).
- При обновлении до новых версий: прежде чем апгрейдить, сделайте резервную копию данных и проверьте совместимость формата данных.
Совет по безопасности: ограничьте доступ к порту 27017 только с доверенных адресов и используйте сетевые политики/брандмауэр.
Альтернативные подходы
- Включение аутентификации через файл конфигурации /etc/mongod.conf: в разделе security установите authorization: “enabled” и перезапустите службу. Это более современный и предпочтительный способ для systemd‑управляемых систем.
- Для автоматизации установки используйте Ansible или Chef, чтобы воспроизводимо добавлять репозиторий и настраивать параметры ulimit и аутентификацию.
- Вместо изменения init-скрипта можно корректно использовать systemd-юнит: добавьте опцию –auth в конфигурацию сервиса через Override-файл systemctl edit mongod.service, если установлен systemd unit.
Проверки и контрольный список (оператор)
- Репозиторий mongodb-org-3.2 добавлен в /etc/yum.repos.d/
- Пакет mongodb-org установлен
- Служба mongod запущена (systemctl status mongod)
- Порт 27017 прослушивается и доступен (по необходимости)
- Лимиты для mongod повышены в /etc/security/limits.conf
- Создан пользователь admin с ролями UserAdminAnyDatabase
- Аутентификация включена и протестирована (db.auth)
- Резервная копия данных перед любыми изменениями
Короткие инструкции для ролей
- Администратор: создайте учётную запись admin, настройте резервное копирование и мониторинг.
- Оператор: проверьте службы, логи и лимиты системы, примените обновления безопасности для ОС.
- Разработчик: используйте отдельные учётные записи с минимальными правами для приложений.
Ментальная модель и когда этот подход не подходит
Ментальная модель: MongoDB — это набор документов (JSON/BSON), хранимых в коллекциях; для управления доступом применяются роли, аутентификация и разрешения на уровне базы.
Не подходит, если:
- Требуется строгая ACID‑транзакционность между множеством таблиц — в таких случаях предпочтительнее реляционные СУБД.
- Нужны сложные SQL‑запросы и связи между множеством таблиц — SQL‑БД удобнее.
Мини‑методология развертывания
- Подготовка ОС: обновление, настройка часов, SELinux/firewalld политики.
- Добавление репозитория и установка mongodb-org.
- Настройка системных лимитов и прав владельца каталога данных.
- Создание администратора и включение аутентификации.
- Настройка мониторинга и бэкапов.
Фактбокс — ключевые параметры
- Порт по умолчанию: 27017
- Пользователь службы: mongod
- Рекомендуемые лимиты (в этом руководстве): nproc 64000, nofile 64000
- Конфигурационный файл: /etc/mongod.conf (в некоторых установках)
Диагностическое дерево (упрощённое)
flowchart TD
A[Запущен mongod?] -->|нет| B[systemctl start mongod]
A -->|да| C[Порты открыты?]
C -->|нет| D[Проверить firewalld/iptables]
C -->|да| E[Есть предупреждения ulimit?]
E -->|да| F[Отредактировать /etc/security/limits.conf]
E -->|нет| G[Создать admin и включить auth]
G --> H[Перепроверить доступы]Небольшой глоссарий
- BSON — бинарное представление JSON, которое MongoDB использует для хранения документов.
- mongod — демон сервера MongoDB.
- mongo — интерактивная оболочка клиента MongoDB.
Примечания по безопасности и соответствию
- Никогда не храните реальные пароли в открытом виде в репозиториях; используйте менеджеры секретов.
- Для соответствия локальным требованиям безопасности ограничьте сетевой доступ и ведите аудит подключений.
Полезные ссылки
Краткое резюме
В руководстве описаны шаги по установке MongoDB 3.2 на CentOS 7, исправлению типичных проблем с ulimit, созданию администратора и включению аутентификации. Дополнительно приведены рекомендации по отладке, альтернативные подходы и контрольный список для эксплуатации.
Важно: на продуктивных системах используйте сильные пароли, ограничение доступа по сети и автоматическое резервное копирование.
Похожие материалы
Баланс в фотографии: виды и приёмы
Как сохранить и выйти из Vi
Как почистить контроллер PS4 — полный гайд
Как печатать в Word: советы и макросы