MongoDB — посібник для початку роботи
MongoDB — документоорієнтована NoSQL-база даних, створена для гнучкості й масштабованості. Замість таблиць і рядків вона зберігає дані як JSON-подібні документи — ідеально для застосунків зі структурою даних, що змінюється. Сервер постачається з повністю налаштованою MongoDB 8.0 і паролем адміністратора, вказаним під час замовлення. Для керування базами через браузер встановлено mongo-express.
Крок 1 — перевірте, що MongoDB працює
IP-адресу сервера й пароль root показано на сторінці Server Details у клієнтській панелі. mongo-express — вебінтерфейс адміністрування MongoDB. Відкрийте http://your.server.ip/mongo-express у браузері, щоб переконатися, що все працює.
Вхід адміністратора MongoDB:
- Імʼя користувача:
admin - Пароль: пароль MongoDB Admin Password, вказаний під час замовлення
У mongo-express можна переглядати бази даних, переглядати й редагувати документи, виконувати запити та керувати колекціями без командного рядка.
Серверам баз даних не потрібен публічний доступ з інтернету. Для безпечного доступу розмістіть сервер у приватній мережі за маршрутизатором VyOS і підключайтеся через VPN до MongoDB і mongo-express за приватною IP сервера.
Крок 2 — віддалене підключення до MongoDB
MongoDB налаштовано на приймання віддалених підключень з автентифікацією. Підключатися можна з будь-якого застосунку чи інструмента:
mongosh "mongodb://admin:your_admin_password@your.server.ip:27017/admin"
Параметри підключення для графічних інструментів MongoDB (MongoDB Compass, Studio 3T тощо):
| Параметр | Значення |
|---|---|
| Хост | your.server.ip |
| Порт | 27017 |
| Імʼя користувача | admin |
| Пароль | Admin Password (із замовлення) |
| База автентифікації | admin |
Формат рядка підключення:
mongodb://admin:your_admin_password@your.server.ip:27017/admin
Примітка: Порт 27017 — це протокол MongoDB, а не HTTP, тож відкрити його в браузері неможливо. Використовуйте клієнт баз даних або команду вище.
Крок 3 — увімкніть SSL для mongo-express (необовʼязково)
Якщо на сервер спрямовано домен, можна увімкнути HTTPS для mongo-express із безкоштовним сертифікатом Let’s Encrypt. Підключіться через SSH і виконайте:
ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com
Скрипт перевірить DNS, отримає сертифікат і автоматично налаштує Apache для HTTPS. Після завершення mongo-express буде доступний за адресою https://db.yourdomain.com/mongo-express.
Примітка: Перед запуском скрипта переконайтеся, що A-запис домену вказує на IP сервера. SSL необовʼязковий — mongo-express нормально працює через HTTP за IP-адресою.
Керування базами даних
Створення додаткових баз даних і користувачів
Додаткові бази даних і користувачів можна створити через mongo-express або SSH:
mongosh -u admin -p --authenticationDatabase admin
use newdb
db.createUser({
user: "newuser",
pwd: "strong_password",
roles: [{ role: "readWrite", db: "newdb" }]
})
Імпорт і експорт
Через mongo-express: Використовуйте вебінтерфейс для перегляду й редагування окремих документів.
Через командний рядок (рекомендовано для масових операцій):
# Export entire database
mongodump -u admin -p your_admin_password --authenticationDatabase admin -d your_database -o /tmp/backup/
# Import database
mongorestore -u admin -p your_admin_password --authenticationDatabase admin -d your_database /tmp/backup/your_database/
# Export single collection to JSON
mongoexport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection -o collection.json
# Import JSON into collection
mongoimport -u admin -p your_admin_password --authenticationDatabase admin -d your_database -c your_collection --file collection.json
Після встановлення
Fail2Ban — захист від підбору паролів
Сервер постачається з Fail2Ban , попередньо налаштованим для захисту SSH і mongo-express від підбору паролів.
| Правило | Макс. спроб | Тривалість блокування |
|---|---|---|
| SSH | 5 невдалих входів | 10 хвилин |
| mongo-express | 5 невдалих входів | 1 година |
Корисні команди:
# Check banned IPs
fail2ban-client status mongo-express
fail2ban-client status sshd
# Unban an IP
fail2ban-client set mongo-express unbanip 1.2.3.4
Якщо ви випадково заблокували себе, підключіться через VNC-консоль у клієнтській панелі й розблокуйте свою IP.
Керування сервісами
MongoDB, mongo-express і Apache працюють через systemd. Типові команди:
# Check service status
systemctl status mongod
systemctl status mongo-express
systemctl status apache2
# Restart MongoDB
systemctl restart mongod
# View MongoDB logs
journalctl -u mongod -n 100
Налаштування продуктивності MongoDB
Під час першого завантаження кеш WiredTiger автоматично встановлюється на 50% RAM. Щоб перевірити поточне значення:
mongosh -u admin -p --authenticationDatabase admin --eval "db.serverStatus().wiredTiger.cache"
Щоб змінити вручну, відредагуйте /etc/mongod.conf (у розділі storage.wiredTiger.engineConfig.cacheSizeGB) і перезапустіть MongoDB:
systemctl restart mongod
Облікові дані сервера
Облікові дані MongoDB і mongo-express зберігаються у /root/.mongo_credentials.
Що вже налаштовано
- Автентифікація: Авторизацію MongoDB увімкнено з SCRAM-SHA-256. Користувач admin має права root
- Віддалений доступ: MongoDB приймає підключення з будь-якої IP на порту 27017
- Кеш WiredTiger: Автоматично налаштовується на 50% доступної RAM під час першого завантаження
- Вебінтерфейс: mongo-express працює за зворотним проксі Apache на /mongo-express
Встановлене ПЗ
| Компонент | Версія |
|---|---|
| Ubuntu | 24.04 LTS |
| MongoDB | 8.0 Community |
| mongosh | входить до MongoDB |
| mongo-express | Остання |
| Apache | 2.4 (зворотний проксі) |
| Certbot | Остання |
| Fail2Ban | 1.0 |
Усунення проблем
| Проблема | Рішення |
|---|---|
| Не вдається віддалено підключитися до MongoDB | Перевірте, що порт 27017 не блокує файрвол. Переконайтеся, що користувач існує та має правильну authenticationDatabase |
| mongo-express показує 401 Unauthorized | Використовуйте імʼя користувача admin і Admin Password із замовлення. Облікові дані — у /root/.mongo_credentials |
| Сторінка mongo-express не завантажується | Перевірте сервіс: systemctl status mongo-express. Перезапуск: systemctl restart mongo-express |
| Помилка автентифікації | Обовʼязково вкажіть --authenticationDatabase admin. Користувач admin автентифікується в базі даних admin |
| MongoDB не запускається | Перевірте логи: journalctl -u mongod -n 50. Поширена причина — заповнений диск (df -h /) або некоректний YAML у mongod.conf |
| Забули пароль адміністратора MongoDB | Підключіться через SSH і перевірте /root/.mongo_credentials |
| Заблоковано Fail2Ban | Розблокуйте свою IP через VNC-консоль у клієнтській панелі |
| Забули пароль root | Скиньте його через VNC-консоль у клієнтській панелі |