Установка базы данных MongoDB на Ubuntu для Prisma

Установка базы данных MongoDB на Ubuntu для Prisma

MongoDB – это популярная СУБД, являющаяся NoSQL-системой. В отличие от реляционных БД, информация в MongoDB хранится в формате JSON-подобных документов. Такие документы группируются в коллекции, при том, что каждый каждый из них может иметь отличную друг от друга структуру.

Разумно установить базу, ориентируясь на официальные рекомендации:

sudo apt-get install gnupg curl

Скачиваем ключи

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \ --dearmor

Проверяем какая у нас версия Ubuntu:

cat /etc/lsb-release

Установка базы данных MongoDB на Ubuntu для Prisma

Выбираем нужный вариант установки Mongo:

Установка базы данных MongoDB на Ubuntu для Prisma

Создаем список sources list:

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Обновляемся:

sudo apt-get update

Устанавливаем MongoDB:

sudo apt-get install -y mongodb-org

Проверяем способ запуска на Ubuntu

ps --no-headers -o comm 1

Установка базы данных MongoDB на Ubuntu для Prisma

Выбираем нужный тип запуска:

Установка базы данных MongoDB на Ubuntu для Prisma

sudo systemctl start mongod

sudo systemctl daemon-reload

Статус:

sudo systemctl status mongod

Установка базы данных MongoDB на Ubuntu для Prisma

Автозагрузка:

sudo systemctl enable mongod

Остановка или перезагрузка:

sudo systemctl stop mongod
sudo systemctl restart mongod

Установка завершена!!!

Управление Mongo

Вы можете проверить, прослушивает ли сервер соответствующий порт. По умолчанию таким портом является порт 27017. Сделать это можно при помощи команды ss:

sudo ss -pnltu | grep 27017

Установка базы данных MongoDB на Ubuntu для Prisma

По умолчанию MongoDB запускается с параметром bindIp, равным 127.0.0.1, который привязывается к сетевому интерфейсу localhost. Это означает, что mongod может принимать соединения только от клиентов, запущенных на том же сервере. Удаленные клиенты не смогут подключиться к mongod, и mongod не сможет инициализировать набор реплик, если для этого значения не будет задан допустимый сетевой интерфейс. Чтобы это исправить, нужно настроить наш сервер nginx на доступ к 127.0.0.1:27017 и настроить аутентификацию при обращении к базе данных. Подключим нашу базу к prisma сервера.

Вход в управление базой:

mongosh

Установка базы данных MongoDB на Ubuntu для Prisma

Авторизация

Теперь, когда мы подключились к оболочке Mongo, давайте добавим в систему административного пользователя, в качестве первого шага на пути закрытия данной уязвимости. Для этого необходимо будет подключиться к базе данных admin. В этой базе хранится информация об учётных записях Mongo, а именно, имена пользователей, их пароли и роли в системе:

use admin

Установленный MongoDB содержит методы оболочки, основанные на JavaScript. Их вы можете использовать для управления базами данных. Один из них, метод db.createUser(), предназначен для создания новых пользователей в базе данных, в которой этот метод запущен.

Чтобы запустить метод, наберите в оболочке Mongo:

db.createUser(

Этот метод требует указания имени учётной записи, её пароля, а также, полномочий, которые вы хотите для неё определить. Как мы уже упоминали ранее, Mongo хранит свои данные в виде JSON-документов. По сути, при создании нового пользователя, вы создаёте документ, где соответствующие пользовательские данные хранятся в виде отдельных полей.

Как и в JSON-объектах, в Mongo содержимое документов оформляется фигурными скобками. Поэтому, чтобы начать добавление учётной записи, откройте фигурную скобку:

... {

Заметка: Mongo не будет считать метод завершённым, пока вы не закроете парные скобки. Поэтому, пока вы не наберёте завершающую метод скобку ), оболочка в качестве приглашения будет использовать символы ..., а по окончании набора снова сменит приглашение на >.

db.createUser(

... {

... user: "Admin",

... pwd: passwordPrompt(),

... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]

... }

... )

Теперь, нажмите Enter. Если синтаксис набранных строк корректен, метод запустится на исполнение и предложит вам ввести пароль для создаваемой учётной записи:

Установка базы данных MongoDB на Ubuntu для Prisma

Теперь можно выйти оболочки Mongo, для чего наберите команду exit.

Откройте для редактирования конфигурационный файл mongod.conf, например, при помощи текстового редактора vim:

cd /etc ==> mongod.conf

В этом файле найдите строку #security и раскомментируйте её (удалите в начале строки символ #).

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

authorization: enabled

Причём, необходимо убедиться, что в строке security нет никаких пробелов в её начале. Строка же authorization: enabled, напротив, имеет два пробела отступа в начале строки. Отредактированный текст должен выглядеть следующим образом, здесь же можно изменить порт:

Установка базы данных MongoDB на Ubuntu для Prisma

Далее, необходимо перезапустить демон MongoDB для того, чтобы применились внесённые в конфигурацию изменения:

sudo systemctl restart mongod

Теперь запустите просмотр статуса службы:

sudo systemctl status mongod

Теперь мы можем проверить, работает ли добавленный параметр аутентификации должным образом.

Как видите, при подключении к оболочке система больше не сообщает нам о том, что система контроля доступа к базам данных не запущена. Такие сообщения с предупреждениями вы могли видеть, когда подключались к оболочке в начале работ по настройке безопасности MongoDB. Из этого можно сделать вывод, что аутентификация включена.

Чтобы убедиться, что теперь доступ к базам ограничен, наберите:

mongosh

show dbs

Установка базы данных MongoDB на Ubuntu для Prisma

Вход в базу через авторизацию

mongosh -u AdminDB -p --authenticationDatabase admin

Установка базы данных MongoDB на Ubuntu для Prisma

Все готово для организации внешнего дуступа к базе. Для этого необходимо настроить nginx сервер, для этого добавляем локацию:

location /mongodb {proxy_pass http://127.0.0.1:27017; }

Установка базы данных MongoDB на Ubuntu для Prisma

Список баз данных:

show dbs

Создать базу данных:

use DATABASE_NAME

Команда use универсальная. Если база данных users уже существует, то будет выполнен просто переход в эту базу данных.

Если базы данных users не существует, то она будет создана и будет выполнен автоматический переход в эту базу данных.

Имя текущей базы данных

db

Удаление базы данных:

db.dropDatabase()

Важный момент - нужно находиться в той базе данных, которую необходимо удалить. Команда dropDatabase() не принимает аргументов.

Создать коллекцию:

db.createCollection(name, options)

Создание двух баз данных для Prisma сервера node.js/express

Призма при управлении базами данных требует основной и теневой базы. Поэтому создадим их обе из админки Ubuntu:

1)

use DATA_PDSERVER

db.createCollection("texts")

Установка базы данных MongoDB на Ubuntu для Prisma

Для доступа в Prisma используем адрес:

DATABASE_URL = mongodb://AdminDB:***********@https://pletnevd.com/mongodb/DATA_PDSERVER?authSource=admin&retryWrites=true&w=majority

Начать дискуссию