Установка mongodb на ubuntu 18.04

Шаг 2 — Начало работы службы MongoDB и тестирование базы данных

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

Выполните следующую команду , чтобы запустить службу MongoDB:

Затем проверьте статус службы

Обратите внимание, что эта команда не включает в определение служебного файла. будет автоматически добавлять этот суффикс для любого аргумента, который вы передаете, если он еще не присутствует, поэтому нет необходимости включать его:

Эта команда возвращает вывод, аналогичный следующему, указывая на то, что служба запущена и работает:

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

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

проверяет и возвращает статус подключения базы данных. Значение поля в ответе означает, что сервер работает нормально:

Также обратите внимание, что база данных работает на порту на , локальном циклическом адресе, представляющем локальный хост localhost. Это номер порта MongoDB по умолчанию

На следующем шаге мы рассмотрим, как управлять экземпляром сервера MongoDB с помощью .

Установите MongoDB 4.4

Поддержка платформы

MongoDB 4.4 Community Edition содержит следующие версии Ubuntu LTS (долгосрочная поддержка) 64-бит: 20.04 LTS (‘Focal’), 18.04 LTS (‘Bionic’), 16.04 LTS (‘Xenial’)

Репозитории Ubuntu по умолчанию предлагают или могут предлагать устаревшую версию MongoDB. По этой причине мы собираемся установить последнюю версию этой системы баз данных из официального репозитория.

Добавьте репозиторий MongoDB в Ubuntu

Чтобы установить последнюю версию MongoDB Community Edition в Ubuntu, нам нужно установить необходимые зависимости. Для этого нам нужно только открыть терминал (Ctrl + Alt + T) и использовать следующие команды:

sudo apt update

sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common

Seguimos импорт открытого ключа GPG из MongoDB. Это используется системой управления пакетами, и мы собираемся добавить его, используя Wget из терминала (Ctrl + Alt + T):

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

Ubuntu 20.04 (фокус)

echo "deb  https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

Ubuntu 18.04 (бионический)

echo "deb  https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

Ubuntu 16.04 (Xenial)

echo "deb  https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

Теперь мы собираемся обновить список доступного ПО из репозиториев:

sudo apt update

Установите базу данных MongoDB 4.4 на Ubuntu

Теперь, когда репозиторий MongoDB включен, мы можем установить последнюю стабильную версию выполнив следующую команду в терминале (Ctrl + Alt + T):

sudo apt install mongodb-org

Во время установки будет создан файл конфигурации. /etc/mongod.conf, каталог данных / var / lib / mongodпо каталогу журналов / вар / журнал / mongodb.

По умолчанию MongoDB работает под учетной записью пользователя mongodb.. Если мы меняем пользователя, мы также должны изменить права доступа к каталогам данных и записей, чтобы назначить доступ к этим каталогам.

Запуск MongoDB

Теперь мы можем запустить и проверить процесс mongod выполняя следующие команды:

sudo systemctl start mongod
sudo systemctl status mongod

sudo service mongod start
sudo service mongod status

Запустите оболочку монго

Если все было правильно, теперь мы можем запустить оболочку mongo без параметров для подключения к mongodb, запущенному на нашем локальном хосте используя порт по умолчанию 27017:

mongo

Устройство базы данных. Документы

Последнее обновление: 07.08.2021

Всю модель устройства базы данных в MongoDB можно представить следующим образом:

Если в реляционных бд содержимое составляют таблицы, то в mongodb база данных состоит из коллекций.

Каждая коллекция имеет свое уникальное имя — произвольный идентификатор, состоящий из не более чем 128 различных алфавитно-цифровых символов и знака подчеркивания.

В отличие от реляционных баз данных MongoDB не использует табличное устройство с четко заданным количеством столбцов и типов данных. MongoDB
является документо-ориентированной системой, в которой центральным понятием является документ.

Документ можно представить как объект, хранящий некоторую информацию. В некотором смысле он подобен строкам в реляционных субд, где строки
хранят информацию об отдельном элементе. Например, типичный документ:

{
    "name": "Tom",
    "surname": "Smith",
    "age": "37",
	"company": {
        "name" : "Microsoft",
        "salary" : "100"
    }
}

Документ представляет набор пар ключ-значение. Например, в выражении «name» представляет ключ, а «Tom» — значение.

Ключи представляют строки. Значения же могут различаться по типу данных. В данном случае у нас почти все значения также представляют строковый тип,
и лишь один ключ (company) ссылается на отдельный объект. Всего имеется следующие типы значений:

  • String: строковый тип данных, как в приведенном выше примере (для строк используется кодировка UTF-8)
  • Array (массив): тип данных для хранения массивов элементов
  • Binary data (двоичные данные): тип для хранения данных в бинарном формате
  • Boolean: булевый тип данных, хранящий логические значения или ,
    например,
  • Date: хранит дату в формате времени Unix
  • Double: числовой тип данных для хранения чисел с плавающей точкой
  • Integer: используется для хранения целочисленных значений размером 32 бита, например,
  • Long: используется для хранения целочисленных значений размером 64 бита
  • JavaScript: тип данных для хранения кода javascript
  • Min key/Max key: используются для сравнения значений с наименьшим/наибольшим элементов BSON
  • Null: тип данных для хранения значения
  • Object: строковый тип данных, как в приведенном выше примере
  • ObjectId: тип данных для хранения id документа
  • Regular expression: применяется для хранения регулярных выражений
  • Decimal128: тип данных для хранения десятичных дробных чисел размером 128 бит, которые позволяют решить проблемы с проблемой точности вычислений
    при использовании дробных чисел, которые представляют тип Double.
  • Timestamp: применяется для хранения времени

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

{
    "name": "Bob",
    "birthday": "1985.06.28",
	"place" : "Berlin",
	"languages" :
}

Казалось бы разные объекты за исключением отдельных свойств, но все они могут находиться в одной коллекции.

Еще пара важных замечаний: в MongoDB запросы обладают регистрозависимостью и строгой типизацией. То есть следующие два документа не будут
идентичны:

{"age" : "28"}
{"age" : 28}

Если в первом случае для ключа age определена в качестве значения строка, то во втором случае значением является число.

Идентификатор документа

Для каждого документа в MongoDB определен уникальный идентификатор, который называется . При добавлении документа в коллекцию
данный идентификатор создается автоматически. Однако разработчик может сам явным образом задать идентификатор, а не полагаться на автоматически генерируемые,
указав соответствующий ключ и его значение в документе.

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

Если идентификатор не задан явно, то MongoDB создает специальное бинарное значение размером 12 байт. Это значение состоит из нескольких
сегментов: значение типа размером 4 байта (которое представляет количество секунд с момента начала эпохи Unix),
случайное число из 5 байт и счетчик из 3 байт, который инициализирован случайным числом.
Такая модель построения идентификатора гарантирует с высокой долей вероятности, что он будет иметь уникальное значение.

НазадВперед

Step 1 — Enabling UFW

In the Initial Server Setup with Ubuntu 16.04 prerequisite, we enabled UFW and allowed only SSH connections. Before we open a port for our client machine, let’s verify UFW’s status:

Note: If the output indicates that the firewall is , activate it with:

Once it’s enabled, rerunning the status command, will show the rules. If necessary, be sure to allow SSH.

Unless we made changes to the prerequisites, the output should show that only OpenSSH is allowed:

Next, we’ll allow access to the default MongoDB port, 27017, but restrict that access to a specific host. If you’ve changed the default port, be sure to update it in the command below.

Re-run this command using the IP address for each additional client that needs access. To double-check the rule, we’ll run again:

Note: If you’re new to UFW, you can learn more in the guide, UFW Essentials: Common Firewall Rules and Commands.

With this firewall rule in place, we’re ready to configure MongoDB to listen on its public interface.

Step 1 — Adding an Administrative User

To add our user, we’ll connect to the Mongo shell:

The output when we use the Mongo shell warns us that access control is not enabled for the database and that read/write access to data and configuration is unrestricted.

We’re free to choose the name for the administrative user since the privilege level comes from the assignment of the role . The database, designates where the credentials are stored. You can learn more about authentication in the MongoDB Security Authentication section.

Set the username of your choice and be sure to pick your own secure password and substitute them in the command below:

When we issue the command, the shell will prepend three dots before each line until the command is complete. After that, we should receive feedback like the following when the user has been added.

Type ‘exit’ and press or use to leave the client.

At this point, our user will be allowed to enter credentials, but they will not be required to do so until we enable authentication and restart the MongoDB daemon.

Установка ссылок в БД

Последнее обновление: 08.08.2021

В реляционных базах данных можно устанавливать внешние ключи, когда поля из одной таблицы ссылаются на поля в другой таблице. В MongoDB
также можно устанавливать ссылки. Далее мы рассмотрим установку ссылок между коллекцией users, которая хранит пользователей, и коллекцией companies,
которая хранит список компаний, в которых работают пользователи.

Ручная установка ссылок

Ручная установка ссылок сводится к присвоению значения поля _id одного документа полю другого документа. Допустим, у нас могут быть коллекции,
представляющие компании и работников, работающих в этих компаниях. Итак, сначала добавим в коллекцию companies документ представляющий компанию:

> db.companies.insertOne({"_id" : "microsoft", year: 1974})

Теперь добавим в коллекцию users документ, который представляет работника. В этом документе будет поле company, представляющее компанию, где работает работник

И очень важно, что в качестве значения для этого поля мы устанавливаем не объект company, а значение ключа добавленного выше документа:

> db.users.insertOne({name: "Tom", age: 28, company: "microsoft"})

Теперь получим документ из коллекции users:

> user = db.users.findOne()

В данном случае имеется в виду, что выше добавленный элемент будет единственным в коллекции. Иначе надо сделать выборку по _id последнего добавленого документа.

После этого консоль выводит полученный документ. И теперь найдем ссылку на его компанию в коллекции companies:

> db.companies.findOne({_id: user.company})

И если документ с таким идентификатором обнаружен, он отображается на консоли:

Автоматическое связывание

Используя функциональность DBRef, мы можем установить автоматическое связывание между документами. Посмотрим на примере применение данной
функциональности. Вначале добавим новый документ в коллекцию companies:

> google = db.companies.insertOne({name : "google", year: 1998})

Обратите внимание, что мы получаем результат добавления в переменную. При добавлении нового документа генерирует _id, которыймы можем получить с помощью свойства результата функции

Теперь создадим новый документ для коллекции users, у которого ключ company свяжем с только что добавленным документом apple:

> sam = ({name: "Sam", age: 25, company: { "$ref" : "companies", "$id" : google.insertedId}})
> db.users.insertOne(sam)

И мы можем протестировать:

> db.companies.findOne({_id: sam.company.$id})

Посмотрев на примере, теперь разберем организацию ссылок между документами. Для связывания с документом google использовалось следующее
выражение . Формальный синтаксис DBRef следующий:

{ "$ref" : название_коллекции, "$id": значение }

Первый параметр $ref указывает на коллекцию, где хранится связанный документ. Второй параметр указывает на значение, которое и будет представлять
что-то типа внешнего ключа. Третий необязательный параметр указывает на базу данных.

При тестировании в качестве запроса на выборку указывается выражение . Так как sam.company
представляет теперь объект , то нам надо конкретизировать параметр

НазадВперед

2: Установка MongoDB

Теперь можно установить MongoDB:

Примечание: Используемые в данном руководстве пакеты не соответствуют стандартам подписи Ubuntu 16.04, потому при установке используется дополнительный флаг –allow-unauthenticated.

Эта команда установит несколько пакетов, среди которых – последняя доступная версия MongoDB и полезные инструменты управления для сервера MongoDB.

Чтобы запустить MongoDB как сервис в Ubuntu 16.04, нужно создать дополнительный unit-файл. Такой файл сообщает системе инициализации systemd, как управлять тем или иным ресурсом. Сервисы – наиболее распространённый тип unit-файлов, определяющий зависимости и параметры запуска и остановки программы.

Создайте такой файл для MongoDB. Файл будет называться

Вставьте в файл следующий код:

Структура этого файла проста:

  • Раздел Unit содержит обзор (удобочитаемое описание сервиса) и зависимости MongoDB. В данном случае MongoDB зависит от network.target.
  • Раздел Service определяет, как запускать данный сервис. Директива User задаёт пользователя, при помощи которого будет запущен сервис (в данном случае это mongodb), а ExecStart определяет команды, при помощи которых запускается сервер MongoDB.
  • Последний раздел, Install, указывает, когда система systemd должна автоматически запустить сервис; multi-user.target – стандартная последовательность запуска (сервис запустится вместе с сервером).

Чтобы запустить новый сервис, введите:

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

Теперь нужно включить автозапуск данного сервиса.

Теперь сервис MongoDB запущен и настроен. Управлять сервисом можно при помощи команд systemctl:

Conclusion

In this tutorial, we’ve added the MongoDB repository to our package list in order to install the latest available version of MongoDB, added an administrative user, and enabled authentication.

We’ve also shown how to configure MongoDB to accept remote connections but prevent advertising the MongoDB installation by configuring the server’s firewall to allow connections only from hosts that require access.

Next Steps:

  • To encrypt data in transit, see the MongoDB’s Security documentation on Transport Encryption
  • Learn more about using and administering MongoDB in these DigitalOcean community articles.

2: Безопасность MongoDB

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

Эти уязвимости были частично устранены в релизе 3.х (и некоторых более ранних версиях, предоставленных менеджерами пакетов). Теперь демон привязан к локальному интерфейсу (127.0.0.1), а значит, он принимает соединения только на Unix-сокет, который не имеет автоматического доступа в Интернет.

Однако аутентификация по умолчанию все ещё отключена, и все пользователи локальной системы имеют полный доступ к базам данных. Чтобы устранить эту уязвимость, создайте пользователя с правами администратора и включите аутентификацию.

Создание администратора

Чтобы добавить пользователя, подключитесь к оболочке Mongo.

В выводе вы увидите предупреждение, что контроль доступа отсутствует, то есть доступ к базе данных и конфигурациям ничем не ограничен.

На данном этапе вы можете выбрать имя администратора (уровень привилегий изменится после присвоения роли userAdminAnyDatabase). База данных admin определяет, где хранятся учетные данные.

Примечание: Узнать больше об аутентификации MongoDB можно в документации проекта.

Выберите имя администратора и надёжный пароль:

Примечание: Замените Admin8host и Admin8host’sSecurePassword именем и паролем вашего администратора.

При выполнении команды db.createUser оболочка будет добавлять три точки в каждую строку, пока команда не будет выполнена. После этого вы получите примерно такой вывод:

Чтобы закончить работу с клиентом, введите exit и нажмите ENTER или CTRL+C.

На данный момент у вас есть пользователь, который имеет учётные данные. Но пока что MongoDB не запрашивает учётных данных. Теперь нужно настроить аутентификацию и перезапустить демон MongoDB.

Настройка аутентификации

Аутентификация настраивается в файле mongod.conf. После настройки нужно перезагрузить mongod, и тогда пользователи должны будут предоставить имя и пароль, чтобы получить возможность взаимодействовать с данными.

Откройте конфигурационный файл:

Найдите раздел #security и удалите # в начале строки, чтобы активировать настройки. Затем нужно добавить параметры аутентификации, которые выглядят следующим образом:

Важно! В начале строки security нет пробелов, но в начале строки authorization должно быть два пробела. Сохраните и закройте файл

Перезапустите демон:

Сохраните и закройте файл. Перезапустите демон:

Если в конфигурации была допущена ошибка, демон не сможет запуститься. Утиилита systemctl не отображает вывод некоторых команд; чтобы убедиться, что демон запустился, используйте команду status:

Если в выводе вы видите строку Active: active (running), значит, демон перезапустился успешно.

Тестирование аутентификации

Попробуйте подключиться к БД без учётных данных.

После включения аутентификации все предупреждения исчезают:

Вы подключились к БД test. Теперь попробуйте запустить какую-нибудь команду:

Вы не сможете создать пользователя или запустить задачу без аутентификации. Теперь нужно протестировать администратора.

Проверка доступа администратора

Чтобы открыть сессию администратора, используйте опцию –u (задает имя пользователя) и –p (задаёт пароль). Также нужно добавить –authenticationDatabase, чтобы указать БД, в которой хранятся учётные данные.

По запросу программы предоставьте пароль. После этого вы попадёте в оболочку, в которой можно запустить команду:

Эта команда выведет доступные базы данных:

Чтобы выйти, введите exit или нажмите CTRL+C.

  • Аутентификация MongoDB
  • Доступ по ролям
  • Пользователи и роли MongoDB

Шаг 3 — Тестирование настроек аутентификации

Чтобы начать тестирование параметров аутентификации, которые вы добавили на предыдущем шаге, на корректность работы, сначала выполните подключение без указания каких-либо учетных данных, чтобы убедиться, что ваши действия попадут под ограничения:

Теперь, когда вы активировали аутентификацию, ни одно из отображавшихся ранее предупреждений не появится:

Убедитесь в наличии ограничения доступа, запустив команду еще раз:

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

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

Теперь мы можем двигаться дальше и выйти из оболочки MongoDB:

Примечание. Вместо запуска команды , которую вы использовали ранее в шаге 1, в качестве альтернативы вы можете закрыть оболочку, просто нажав .

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

Введите пароль пользователя при запросе, после чего вы сможете войти в оболочку. Находясь в оболочке попробуйте снова воспользоваться командой :

Так как вы успешно выполнили аутентификацию, на этот раз команда успешно вернет список всех баз данных на сервере:

Это служит подтверждением, что аутентификация была успешно активирована.

Step 2 — Enabling Authentication

Authentication is enabled in the file. Once we enable it and restart , users still will be able to connect to Mongo without authenticating, but they will be required to provide a username and password before they can interact.

Let’s open the configuration file:

In the section, we’ll remove the hash in front of to enable the stanza. Then we’ll add the authorization setting. When we’re done, the lines should look like the excerpt below:

mongodb.conf

Note that the “security” line has no spaces at the beginning, and the “authorization” line must be indented with two spaces

Once we’ve saved and exited the file, we’ll restart the daemon:

If we’ve made an error in the configuration, the dameon won’t start. Since doesn’t provide output, we’ll use its option to be sure that it did:.

If we see in the output and it ends with something like the text below, we can be sure the command was successful:

Having verified the daemon is up, let’s test authentication.

1: Установка MongoDB

Официальный репозиторий пакетов Ubuntu включает стабильную версию MongoDB. Однако на момент написания этого мануала в репозиториях Ubuntu по умолчанию была доступна версия 3.6, а последняя стабильная версия MongoDB – 4.4.

Чтобы получить самую последнюю стабильную версию, вы должны добавить специальный репозиторий пакетов MongoDB в список источников APT. Затем вы сможете установить mongodb-org, мета-пакет, который всегда содержит последнюю версию MongoDB.

Для начала импортируйте открытый ключ GPG для последней стабильной версии MongoDB. Вы можете найти соответствующий файл на сервере ключей MongoDB; на нем нужно найти файл, который содержит номер последней стабильной версии и заканчивается на .asc. Например, если вы хотите установить версию 4.4, вы должны искать файл с именем server-4.4.asc.

Кликните на файл правой кнопкой мыши и выберите Copy link address. Затем вставьте эту ссылку в следующую команду curl, заменив указанный в примере URL:

cURL – это инструмент командной строки для передачи данных, доступный во многих операционных системах. Он считывает все данные, хранящиеся по указанному URL, и передает их на вывод системы. В нашем примере cURL выводит содержимое файла GPG и затем передает его команде sudo apt-key add -, тем самым добавляя ключ GPG в список доверенных ключей.

Также обратите внимание, что наша команда curl использует параметры -fsSL, которые подавляют сообщения об ошибках. Это означает, что если по какой-то причине cURL не может связаться с сервером GPG (или сервер GPG не работает), cURL не сможет случайно добавить полученный код ошибки в ваш список доверенных ключей

Эта команда вернет OK, если ключ был добавлен успешно:

Если вы хотите убедиться, что в список был добавлен правильный ключ, вы можете сделать это с помощью следующей команды:

В выводе должен быть ключ MongoDB:

На данный момент менеджер apt еще не знает, где найти пакет mongodb-org, необходимый для установки последней версии MongoDB.

На вашем сервере есть два места, где APT ищет онлайн-источники пакетов для загрузки и установки: это файл sources.list и каталог sources.list.d. В файле sources.list перечислены активные источники данных APT (по одному источнику в каждой строке), а наиболее приоритетные источники указаны первыми. Каталог sources.list.d позволяет добавлять такие записи sources.list как отдельные файлы.

Выполните следующую команду, чтобы создать в каталоге sources.list.d файл mongodb-org-4.4.list. В этом файле будет храниться всего одна строка (deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse).

Эта строка сообщит APT все, что ему нужно знать, чтобы найти и установить MongoDB.

  • deb: это означает, что исходная запись ссылается на обычную архитектуру Debian. В других случаях в этой части строки может быть deb-src, что означает, что исходная запись представляет собой исходный код дистрибутива Debian.
  • указывает, на какие архитектуры следует загружать данные APT. В данном случае это архитектуры amd64 и arm64.
  • https://repo.mongodb.org/apt/ubuntu: это URI, представляющий место, где можно найти данные APT. В этом случае URI указывает на адрес HTTPS, где расположен официальный репозиторий MongoDB.
  • focal/mongodb-org/4.4: репозитории Ubuntu могут содержать несколько разных релизов. Эта часть команды указывает, что вам нужна только версия 4.4 пакета mongodb-org, доступная для основного релиза Ubuntu (Focal Fossa – кодовое имя Ubuntu 20.04).
  • multiverse: эта часть указывает APT на один из четырех основных репозиториев Ubuntu (в данном случае – на ).

После этого обновите индекс пакетов сервера:

Затем установите пакет MongoDB.

Чтобы подтвердить установку, нажмите Y и ENTER.

База данных MongoDB установлена на сервер. Теперь вам нужно проверить, работает ли она.

Шаг 4 — Настройка брандмауэра (необязательно)

Если вы следовали указаниям обучающего модуля по начальной настройке сервера и включили на сервере брандмауэр, сервер MongoDB будет недоступен из интернета.

Если вы намереваетесь использовать сервер MongoDB только локально с запуском приложений на том же сервере, эту безопасную настройку рекомендуется сохранить. Однако если вы хотите иметь возможность подключения к серверу MongoDB из интернета, необходимо разрешить входящие подключения в .

Чтобы разрешить доступ к MongoDB через порт по умолчанию из любой точки, можно использовать команду . Однако включение доступа к серверу MongoDB через интернет с параметрами по умолчанию даст кому угодно доступ к серверу базы данных и его содержимому.

В большинстве случаев доступ к MongoDB следует разрешать только из определенных доверенных мест, таких как другой сервер хостинга приложения. Для этого нужно разрешить доступ к порту MongoDB по умолчанию, но указать IP-адрес другого сервера, которому будет дано явное разрешение на подключение:

Вы можете проверить изменение параметров брандмауэра с помощью :

В результатах вывода должно быть видно, что трафик на порт разрешен:

Output

Если вы решили разрешить подключение к серверу MongoDB только для одного IP-адреса, этот адрес должен быть указан в выводимом списке вместо «Anywhere».

Дополнительные настройки брандмауэра для ограничения доступа к службам можно найти в разделе Основы UFW: распространенные правила и команды брандмауэра.

Хотя порт открыт, MongoDB прослушивает только локальный адрес . Чтобы разрешить удаленные подключения, добавьте публичный маршрутизируемый IP-адрес вашего сервера в файл .

Откройте файл конфигурации MongoDB в редакторе:

Добавьте IP-адрес вашего сервера в значение :

Обязательно поставьте запятую между уже записанным IP-адресом и добавленным.

Сохраните файл, закройте редактор и перезапустите MongoDB:

Теперь MongoDB прослушивает удаленные соединения, но доступ к нему открыт для всех. Следуйте указаниям части 2 руководства , чтобы добавить административного пользователя и дополнительные ограничения.

Доступ по сети

По умолчанию к установленной базе можно подключиться только с локального компьютера. Рассмотрим процесс настройки сетевого доступа.

Для начала, откроем порт в брандмауэре:

iptables -I INPUT -p tcp —dport 27017 -j ACCEPT

* по умолчанию, MongoDB работает на TCP-порту 27017.

В системах на базе Ubuntu и Debian брандмауэр работает по принципу разрешения. Если мы не меняли данной настройки, то нам не обязательно создавать разрешающее правило для Mongo.

Открываем конфигурационный файл СУБД:

vi /etc/mongod.conf

Находим директиву net и в ней опцию bindIp — добавляем IP-адрес, на котором наш сервер должен принимать запросы для MongoDB:

net:
  port: 27017
  bindIp: 127.0.0.1,192.168.1.15

* в нашем примере мы добавили к 127.0.0.1 адрес 192.168.1.15 — это сетевой адрес нашего сервера, на котором он должен принимать запросы.

Перезапускаем сервис mongod:

systemctl restart mongod

Чтобы проверить подключение, на другом компьютере должен быть установлен клиент для подключения к Mongo. Процесс его установки схож с установкой сервера. Рассмотрим пример для Ubuntu.

Устанавливаем ключ для репозитория:

wget -qO — https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add —

Добавляем репозиторий: 

vi /etc/apt/sources.list.d/mongodb-org.list

deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse

* как в случае с сервером, focal — название релиза Ubuntu. В данном примере, версия 20.04. Другие варианты: bionic: 18.04, xenial: 16.04.

 Обновляем список пакетов:

apt-get update

Устанавливаем клиентскую часть: 

apt-get install mongodb-org-shell

Теперь можно подключиться к нашему серверу: 

mongo «mongodb://192.168.1.15:27017»

* в данном примере мы подключаемся к серверу MongoDB 192.168.1.15.

Также мы можем использовать MongoDB Compass — это приложение под Windows, Linux и macOS для работы с базой Mongo в графическом интерфейсе. Скачать его можно на странице официального сайта.

Заключение

В этом учебном модуле мы познакомили вас с основами экспорта информации из базы данных MongoDB и импорта информации в эту БД. Дополнительную информацию можно найти в учебном модуле Резервное копирование, восстановление и миграция базы данных MongoDB в Ubuntu 20.04.

Также вы можете рассмотреть возможность использования репликации. Репликация позволяет продолжить выполнение службы MongoDB без перебоев на подчиненном сервере MongoDB во время восстановления главного сервера после неисправности. Частью процесса репликации является журнал операций (oplog), где записываются все операции, изменяющие данные. Вы можете использовать этот журнал, как если бы вы использовали двоичный журнал в MySQL для восстановления данных после последнего резервного копирования. Помните, что резервное копирование обычно выполняется ночью, и если вы решите восстановить данные вечером, вы потеряете все изменения, которые произошли с момента создания резервной копии.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: