Рубрики
Uncategorized

Настройка MongoDB. Локально

Простая база данных Mongo Я немного использовал MongoDB и хотел поделиться, как я обычно AP … Теги с MongoDB, начинающими, дежопами, покемонами.

Простая база данных Mongo

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

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

  • Основная установка
  • Загрузка набора данных
  • Основная безопасность

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

Мой локальный

В интересах прозрачности и здравомытия при отладке это соответствующие детали моей местной среды.

ОС: Macos Mojave 10.14.4
Домашний вид: домороженный 2.1.9
Git: Git версия 2.22.0
Монгодб: Монгодб Сообщество 4.0

УСТАНОВИТЬ

Установка и запуск Mongodb проста. Откройте свой терминал и используйте команды ниже:

brew tap mongodb/brew
brew install mongodb-community@4.0 
mongod --config /usr/local/etc/mongod.conf &

Домашний вид Нажмите Команда создает неглубокий клон Формула Монгодба Отказ Это означает, что добавляет ссылку/ссылку на этот репозиторий GitHub в вашей доме к будущему использованию.

Мы бежим Установить Зная, что он использует формулы MongoDB, которые мы указали ранее. Помимо двоичных файлов MongoDB, HOMEBREW создает ваш файл конфигурации ( mongod.conf ) и необходимые пути.

Несмотря на использование домашнего хода для установки, мы не будем использовать их Услуги команда. Это потому, что Brew Services использует locatctl файлы plist. Следовательно, Он не тянет свежую копию вашего файла конфигурации в каждом запуске.

Вместо этого мы напрямую призываем Монго Родительский процесс MongoDB со ссылкой на нашу «Mongod.conf», используя --config флаг. В Linux, & это Оператор управления Отказ Это позволяет вашей оболочке управлять командой (ыми), выданными на заднем плане; Это выводит Идентификатор процесса (PID) . Если вы хотите проверить, вы можете использовать Работа --L Напечатать процесс работает фоном и его PID. Вы также можете использовать PS| Greep Mongo * в этом случае).

НАГРУЗКА

Теперь, когда мы установили и начали наш MongoDB, нам нужно заполнить его с данными. Мы будем использовать набор данных из Монго-покемон Репозиторий, предоставленный Alt-WDI Отказ Чтобы сохранить это простым, я развел этот репо и обрезал его к одному файлу набора данных, который нам понадобится.

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

git clone https://github.com/jackkeck/pokemonDataSet
cd pokemonDataSet
mongoimport -d pokemon -c pokemons --jsonArray < pokemon.json
mongo
show dbs
use pokemon
show collections
db.pokemons.find().pretty()

Гит клон Команда скопирует мой раздвоенный репозиторий на ваш локальный компьютер. Как только это скачано, вы используете CD сбросить в репозиторий.

Монгодб монгомпорт Команда позволяет нам набросать данные нагрузки. В этом случае мы используем флаги для достижения нескольких вещей. Мы создаем базу данных под названием «Pokemon», используя -d флаг. Мы создаем коллекцию под названием «Pokemons», используя -C флаг. Мы говорим команду импорта для лечения файла данных как JSON Array Отказ Наконец, мы указываем Pokemon.json в качестве нашего файла импорта.

Mongodb предоставляет оболочку на основе JavaScript через это Монго команда. Как только мы попмеем оболочку, мы используем Показать DBS Команда для перечисления всех доступных баз данных для проверки мы создали базу данных Pokemon. Мы использовать Затем база данных Pokemon затем перечислите свои коллекции, используя Показать коллекции . Мы можем увидеть коллекцию «Pokemons», чтобы мы использовали db.pokemons.find (). Красивая () Чтобы проверить, что данные импортированы. Мне нравится добавлять .Pretty () Метод облегчает прочтение продукции. Для тех из вас, кто знаком с реляционными базами данных и SQL, это Mongo Equivalent Выберите * от pokemon.pokemons Отказ

БЕЗОПАСНОСТЬ

MongoDB и сообщество безопасности имели интересные отношения. До версии 3.6, Mongodb использует, чтобы позволить любому подключению к порту 27017 по умолчанию (означающее, если вы не были за брандмауэром, кто-то может появиться в вашу базу данных). Даже сейчас он по-прежнему не отправляется с любым видом контроля доступа или аутентификации, включенной по умолчанию, если у вас нет лицензированной формы предприятия 💰. Этот раздел прогуляется по некоторым основным шагам, мы можем предпринять, чтобы защитить наш экземпляр.

Контроль доступа на основе ролей

Как правило, мы должны попытаться придерживаться принципа наименьших привилегий (POLP). Применив этот принцип сейчас, мы гарантируем, что мы создаем наше приложение с уровнем доступа, который у нас будет в производственной среде.

MongoDB использует ролевый контроль доступа (RBAC), чтобы обеспечить управление (ER …. контроль) доступа. Есть тонна материала, доступной на том, что rbac. Если вы заинтересованы, вот Определение из конференц-бумаги David Ferraiolo и Ричарда Куна «Контроль доступа на основе ролей» :

Решения контроля доступа на основе ролей (RBAC). Пользователи не могут пройти разрешения доступа к другим пользователям по своему усмотрению.

MongoDB не отправляется с этим включено по умолчанию. Для того, чтобы включить это, нам нужно:

  1. Создать суперпользователь.
  2. Включить Авторизация В нашем mongod.conf Отказ
  3. Создайте пользователь с доступом к чтению и записи (RW), но только в базу данных Pokemon.

Создать администратор пользователя

Суперпользователь имеет доступ к чему-либо и всему. Вы работаете с этим доступом в течение всего времени по умолчанию. Итак, давайте создадим специальный пользователь администратора с паролем. В вашем терминале откройте оболочку Mongo и выполните следующие действия:

use admin

db.createUser(
  { 
    user: "admin",  
    pwd: "doNotEatThat", 
    roles: 
      [
        {role: "userAdminAnyDatabase", db: "admin"},
        {role: "dbAdminAnyDatabase",   db: "admin"},
        {role: "readWriteAnyDatabase", db: "admin"}
      ]
  }
)

Включить авторизацию

Как только пользователь администратора создан, нам нужно включить Безопасность. Авторизация Настройка в MongoDB.

  1. Стоп Mongodb Run Pkill -f Mongod остановить базу данных. Вы можете подтвердить, что он перестал использовать рабочие места -l .
  2. Обновление Mongod.conf. Я использовал Sudo Vi Отказ Для справки используйте клавиши со стрелками, чтобы добраться до конца файла, нажмите «I» на клавиатуре, чтобы введите, добавьте блок безопасности ниже, нажмите «ESC» на клавиатуре, затем введите «: WQ», затем нажмите Enter на Сохранить и выйти.
/:~$ sudo vi /usr/local/etc/mongod.conf

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  bindIp: 127.0.0.1
security:
   authorization: enabled

Создать базовый пользователь

Базовый пользователь будет прочитать и запись доступа для Только база данных Pokemon. В вашем терминале откройте оболочку Mongo и выполните следующие действия:

db.auth("admin", "doNotEatThat")

use pokemon

db.createUser(
  { 
    user: "misty",  
    pwd: "godDamitPsyduck", 
    roles: 
      [
        {role: "readWrite", db: "pokemon"}
      ]
  }
)

ДОВЕРЯЙ, НО ПРОВЕРЯЙ

Чтобы проверить вашу базу данных в настоящее время управляется с помощью RBAC, попробуйте подключить и просматривать что-то. Вы заметите, что когда вы инициируете соединение с помощью Монго Shell, больше нет предупреждающего сообщений «Управление доступом» не включено для этой базы данных «. Кроме того, мы не можем просматривать или редактировать что угодно, пока мы не аутентифицируемся с помощью db.auth («Пользователь», «PWD») Отказ

Изменить порт по умолчанию

Начиная с MongoDB 3.6, Mongod теперь настроен для разрешения подключений Только от localhost. Это означает, что вы можете получить доступ только к вашему экземпляру только с вашего ноутбука. Это превосходное, однако IP можно подделывать и т. Д. Один дополнительный шаг, который мы возьмем, это изменить порт по умолчанию MongoDB по умолчанию. Похоже на то, как мы включили Безопасность. Авторизация мы обновим наше mongod.conf Отказ

  1. Стоп Mongodb Run Pkill -f Mongod остановить базу данных. Вы можете подтвердить, что он перестал использовать рабочие места -l .
  2. Обновление Mongod.conf. Я использовал Sudo Vi Отказ Для справки используйте ваши клавиши со стрелками, чтобы добраться до конца файла, нажмите «I» на клавиатуре, чтобы ввести, добавьте настройку порта, нажмите «ESC» на клавиатуре, затем введите «: WQ», затем нажмите Enter на Сохранить и выйти.
/:~$ sudo vi /usr/local/etc/mongod.conf

systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
storage:
  dbPath: /usr/local/var/mongodb
net:
  port: 23456
  bindIp: 127.0.0.1
security:
   authorization: enabled

Теперь запустите вашу базу данных. Пожалуйста, имейте в виду, что вам нужно будет запустить `Mongo —Port 23456 ‘, когда вы запускаете, что вы подключаетесь сейчас.

Полезные отходы

Очистка базы данных Чтобы быстро вытереть все базы данных кроме администратора Пожалуйста, используйте этот Nifty одноклассник от пользователя Кевар как часть Монгодб опустите каждую базу данных Тема на переполнении стека: Bash Mongo --quiet --eval 'db.getmongo (). getdbnames (). foreach (Функция (i) {db.getsiblableddb (i) .dropdatabase ()})' Чистый Unistalll Чтобы полностью удалить MongOdb и удалите все свои третичные данные, выполните следующие команды: Bash Pkill -f Mongod Loctctl Unload ~/Библиотека/Запустить/homebrew.mxcl.mongodb.plist RM -F ~/Библиотека/Запустить/homebrew.mxcl.mongodb.plist locatctl Удалить Homebrew.mxcl.mongodb Brew Uninstall --Force MongoDB-сообщество Brew до Mongodb/Brew RM -RF/usr/local/etc/mongo * RM -RF/usr/local/bin/mong * RM -RF/USR/LOCAL/VAR/MONGODB RM -RF/Пользователи/$ Пользователь/Библиотека/Кэшира/Домашние/Загрузки/* Mongodb *

Оригинал: «https://dev.to/jackkeck/setting-up-mongodb-locally-1lm2»