Як встановити та захистити MongoDB на Ubuntu 24.04
MongoDB — це багатоплатформна та розподілена система баз даних NoSQL (non-SQL або Non-Relational) з відкритим вихідним кодом. Замість того, щоб зберігати дані в таблицях, як традиційні бази даних SQL, MongoDB використовує гнучкі документи для зберігання різних форм даних. MongoDB використовує двійковий формат JSON, BSON, для зберігання даних.
MongoDB — це розподілена база даних NoSQL з вбудованою високою доступністю, автоматичним перемиканням після відмови та резервуванням даних, а також горизонтальним масштабуванням за допомогою шардингу між розподіленими кластерами. Він підтримує географічне розгортання в кількох регіонах і надає API запитів, який підтримує операції CRUD (читання та запис), конвеєр агрегації даних, текстовий пошук та геопросторові запити.
У цьому посібнику ми покажемо вам, як встановити MongoDB на сервер Ubuntu 24.04. Ви підготуєте свій сервер Ubuntu, додасте репозиторій MongoDB, встановите сервер MongoDB, створите адміністратора для MongoDB, а потім увімкнете аутентифікацію MongoDB. Нарешті, ви дізнаєтесь, як створити користувача та базу даних у MongoDB за допомогою оболонки ‘mongosh’.
Передумови
Перш ніж почати, переконайтеся, що у вас є наступне:
- Сервер Ubuntu 24.04
- Користувач без права root з правами адміністратора
Підготовка системи
Перед встановленням MongoDB на вашу систему Ubuntu, переконайтеся, що ви налаштували свою систему. У цьому випадку ви будете налаштовувати сервер Ubuntu за допомогою наступного:
- Вимкніть прозорі величезні сторінки через systemd
- Збільшення лімітів для стандартного користувача MongoDB ‘mongod’
- Налаштування max fs.file-max та увімкнення swappiness через файл ‘/etc/systctl.conf‘
Вимкніть прозорі величезні сторінки (THP)
Щоб вимкнути THP у вашій системі, вам потрібно створити новий файл служби systemd, який виконуватиметься автоматично при кожному завантаженні або запуску.
Створіть новий службовий файл ‘/etc/systemd/system/disable-thp.service‘ за допомогою редактора ‘nano’.
sudo nano /etc/systemd/system/disable-thp.service
Вставте наступну конфігурацію, щоб вимкнути THP через службу.
[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
Збережіть файл і вийдіть з редактора.
Тепер виконайте команду ‘systemctl‘ нижче, щоб перезавантажити менеджер systemd, запустіть і включіть службу ‘disable-thp‘. При цьому THP буде відключений при старті системи.
sudo systemctl daemon-reload sudo systemctl enable --now disable-thp.service
Налаштування Ulimits
Після того, як ви вимкнули THP, вам потрібно збільшити максимальний файл і процеси за замовчуванням для користувача ‘mongod’ принаймні до ‘64000‘.
Створіть новий файл ‘/etc/security/limits.d/mongodb.conf‘ за допомогою наступної команди редактора ‘nano’.
sudo nano /etc/security/limits.d/mongodb.conf
Вставте наступну конфігурацію, щоб збільшити максимальну кількість відкритих файлів і процесів до «64000».
mongod soft nproc 64000 mongod hard nproc 64000 mongod soft nofile 64000 mongod hard nofile 64000
Збережіть файл і вийдіть з редактора.
Налаштуйте swappiness і fs.file-max
Нарешті, вам потрібно збільшити стандартний ‘fs.file-max‘ та увімкнути swappiness для MongoDB. Для цього вам потрібно відредагувати файл ‘/etc/sysctl.conf‘.
Відкрийте файл ‘/etc/sysctl.conf‘ за допомогою команди редактора ‘nano’.
sudo nano /etc/sysctl.conf
Вставте наступну конфігурацію, щоб налаштувати fs.file-max і увімкнути swappiness.
fs.file-max = 2097152 vm.max_map_count = 262144 vm.swappiness = 1
Коли закінчите, збережіть файл і вийдіть з редактора.
Тепер виконайте команду ‘sysctl‘ нижче, щоб застосувати зміни без перезавантаження.
sudo sysctl -p
Встановлення MongoDB з менеджером пакетів APT
Тепер, коли ви налаштували свою систему Ubuntu, ви готові встановити MongoDB. У цьому розділі ви встановите останню версію MongoDB 8.0 з офіційного репозиторію MongoDB.
Спочатку виконайте команду ‘apt‘ нижче, щоб оновити індекс пакетів Ubuntu та встановити пакети ‘gnupg‘ і ‘curl‘. Введіть «Y», щоб підтвердити встановлення.
sudo apt update && sudo apt install gnupg curl
Тепер виконайте наступну команду, щоб додати ключ GPG та репозиторій для MongoDB. У цьому прикладі ви будете встановлювати MongoDB 8 на свій сервер Ubuntu 24.04.
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \ --dearmor
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
Далі виконайте команду ‘apt‘ нижче, щоб оновити індекс пакетів і встановити пакет ‘mongodb-org‘ у свою систему. Введіть «Y», щоб продовжити встановлення.
sudo apt update && sudo apt install mongodb-org
Після завершення інсталяції виконайте команду ‘systemctl‘ нижче, щоб перезавантажити менеджер systemd. Сервіс ‘mongod‘ додано до вашої системи Ubuntu.
sudo systemctl daemon-reload
Нарешті, виконайте наведену нижче команду, щоб запустити, увімкнути та перевірити службу MongoDB ‘mongod‘. Ви побачите, що MongoDB працює у вашій системі.
sudo systemctl enable --now mongod sudo systemctl status mongod
Захист сервера MongoDB
Після встановлення MongoDB ви будете захищені при встановленні сервера MongoDB за допомогою наступних вимог:
- Створення нового адміністратора для MongoDB за допомогою оболонки ‘mongosh‘
- Увімкніть аутентифікацію MongoDB, відредагувавши файл конфігурації ‘/etc/mongod.conf‘
Створення адміністратора MongoDB користувача
У цьому розділі ви створите нового користувача адміністратора MongoDB за допомогою оболонки ‘mongosh’. Оболонка ‘mongosh’ – це командний рядок клієнта для взаємодії з сервером MongoDB, це як ‘mysql’ для MySQL/MariaDB і ‘psql’ для PostgreSQL.
Щоб створити адміністратора, увійдіть на сервер MongoDB за допомогою команди оболонки ‘mongosh‘ нижче.
mongosh
Тепер виконайте наступний запит, щоб відключити телеметрію MongoDB.
disableTelemetry()
Далі перейдіть до бази даних ‘admin‘ і виконайте наступні запити, щоб створити нового користувача admin для MongoDB. У цьому прикладі ви створюєте нового користувача “myAdmin“, а потім вводите новий пароль, коли з’явиться відповідний запит.
use admin
db.createUser( { user: "myAdmin", pwd: passwordPrompt(), roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
Тепер введіть ‘quit()‘, щоб вийти з оболонки MongoDB.
Увімкніть аутентифікацію MongoDB
Тепер, коли ви створили адміністратора MongoDB, ви готові увімкнути аутентифікацію MongoDB за допомогою файлу ‘/etc/mongod.conf‘.
Відкрийте стандартну конфігурацію сервера MongoDB ‘/etc/mongod.conf‘ за допомогою наступної команди редактора ‘nano’.
sudo nano /etc/mongod.conf
Додайте наступні рядки, щоб увімкнути аутентифікацію в MongoDB.
security: authorization: enabled
Коли закінчите, збережіть файл і вийдіть з редактора.
Тепер виконайте команду ‘systemctl‘ нижче, щоб перезавантажити сервер MongoDB і застосувати зміни. При цьому буде включена аутентифікація MongoDB.
sudo systemctl restart mongod
Перевірте аутентифікацію MongoDB
Тепер, коли ви забезпечили безпеку встановлення сервера MongoDB, давайте перевіримо вашу конфігурацію, увійшовши в систему MongoDB за допомогою оболонки ‘mongosh’ та нового адміністратора користувача та пароля.
Увійдіть на сервер MongoDB як користувач ‘myAdmin‘ за допомогою команди ‘mongosh‘ нижче. Введіть пароль, коли з’явиться відповідний запит.
mongosh --port 27017 --authenticationDatabase \ "admin" -u "myAdmin" -p
Увійшовши в систему, виконайте запит нижче, щоб перевірити статус підключення. Ви повинні були увійти на сервер MongoDB за допомогою користувача ‘myAdmin‘.
db.runCommand({connectionStatus : 1})
Тепер введіть ‘quit()‘, щоб вийти з сервера MongoDB.
Створення бази даних та користувача в MongoDB
У цьому розділі ви дізнаєтеся, як створити нову базу даних і користувача в MongoDB за допомогою оболонки ‘mongosh’. Тому переконайтеся, що ви увійшли в систему MongoDB як користувач з правами адміністратора.
Спочатку виконайте запит нижче, щоб перейти до бази даних ‘mydb‘.
use mydb
Тепер виконайте наступний запит, щоб створити нового користувача ‘myUser‘ і дозволити доступ на читання та запис до бази даних ‘mydb‘. Введіть пароль, коли з’явиться відповідний запит.
db.createUser( { user: "myUser", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "readWrite", db: "mydb" }, { role: "read", db: "reporting" } ] } )
Введіть ‘quit()‘, щоб вийти з сервера MongoDB.
Тепер виконайте команду ‘mongosh’ нижче, щоб увійти як ‘myUser‘ до бази даних ‘mydb‘. Введіть пароль, коли з’явиться відповідний запит.
mongosh --port 27017 --authenticationDatabase \ "mydb" -u "myUser" -p
Увійшовши в систему, перевірте статус з’єднання за допомогою наступного запиту.
db.runCommand({connectionStatus : 1})
Нижче ви можете побачити, що ви підключилися до сервера MongoDB з користувачем ‘myUser’ і привілеями до бази даних ‘mydb‘.
Висновок
Вітаємо! Ви завершили встановлення сервера MongoDB на сервер Ubuntu 24.04. Ви також створили користувача з правами адміністратора та забезпечили безпечну інсталяцію MongoDB. Потім ви дізналися, як використовувати ‘mongosh’ для підключення до сервера MongoDB та основні запити для керування користувачами та базами даних у MongoDB.