MongoDB — это документоориентированная нереляционная СУБД, которая распространяется по лицензии SSPL и имеет открытый исходный код.

Её создатели были довольно авторитетными в мире IT разработчиками. В частности, именно они основали в начале 2000-х DoubleClick — одну из первых компаний, специализирующихся на интернет-рекламе, с фантастической по тем временам скоростью показа до 400 000 объявлений в секунду.

СУБД пригодна для использования приложениями, обрабатывающими данные без жёсткой структуры и связей. Базы MongoDB гибкие и масштабируемые, они обеспечивают быструю и надёжную работу программ.

Предварительная настройка#

  1. Установка необходимых пакетов:
sudo apt-get install gnupg curl micro
  1. Импорт публичного ключа MongoDB:
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
   --dearmor
  1. Добавление репозитория MongoDB:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Установка MongoDB#

sudo apt-get update
sudo apt-get install -y mongodb-org

Настройка безопасности#

  1. Редактирование конфигурационного файла:
sudo micro /etc/mongod.conf
  1. Включение авторизации (раскомментируйте и добавьте следующие строки):
security:
  authorization: enabled
  1. Настройка сетевого доступа (в том же файле):
net:
  port: 27017
  bindIp: 0.0.0.0  # Разрешает подключения со всех IP-адресов
  1. Настройка файервола:
sudo ufw allow from YOUR_IP to any port 27017  # Замените YOUR_IP на ваш IP-адрес
sudo ufw allow ssh  # Разрешаем SSH-подключения
  1. Перезапуск и проверка статуса MongoDB:
sudo systemctl restart mongod
sudo systemctl status mongod
sudo lsof -i | grep mongo  # Проверка прослушиваемых портов

Создание пользователей и настройка прав доступа#

  1. Создание администратора (выполнять в mongo shell):
use admin
db.createUser({
  user: "admin",
  pwd: "ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ",
  roles: [
    { role: "root", db: "admin" }
  ]
})
  1. Пример создания обычного пользователя:
db.createUser({
  user: "user",
  pwd: "ВАШ_НАДЕЖНЫЙ_ПАРОЛЬ",
  roles: [
    { role: "readWrite", db: "vpn" }
  ]
})
  1. Предоставление дополнительных прав существующему пользователю:
db.grantRolesToUser("user1", [
  { role: "readWrite", db: "db1" },
  { role: "dbOwner", db: "db2" }
])

Подключение к MongoDB#

  1. Подключение с аутентификацией:
mongo -u admin_user -p admin_password --authenticationDatabase admin
  1. Создание новой базы данных и коллекции:
use dbname1  # Создает новую базу данных
db.createCollection("clients_tg")  # Создает новую коллекцию

Важные замечания:#

  • Всегда используйте надежные пароли
  • Убедитесь, что файервол правильно настроен
  • Регулярно обновляйте MongoDB для получения последних исправлений безопасности
  • Храните учетные данные в безопасном месте
  • При настройке bindIp: 0.0.0.0 убедитесь, что приняты все необходимые меры безопасности