Как открыть mongodb в браузере
По умолчанию MongoDB предоставляет интерактивную оболочку mongo на основе JavaScript, которую можно использовать для выполнения операций с базой данных. Хотя эта оболочка может быть лучшим подходом для запуска запросов MongoDB, инструмент GUI для администрирования службы всегда полезен.
Существует много таких инструментов с графическим интерфейсом, как Rockmongo, PHPMoAdmin, Fang of Mango, UMongo, MongoExplorer и MongoVUE, и это лишь некоторые из них. Когда дело доходит до использования MongoDB с PHP-проектами, Rockmongo и PHPMoAdmin являются хорошими вариантами. В этой статье мы рассмотрим Rockmongo.
Начиная
Требования для запуска Rockmongo:
- веб-сервер под управлением PHP
- PHP 5.1.6 или выше с поддержкой сессий
- расширение php_mongo для MongoDB
Инструкции по установке можно найти в Rockmongo Wiki , но, как правило, вам нужно разархивировать загруженный пакет в доступную через Интернет директорию в корневом каталоге вашего сайта и переименовать его в rockmongo. Откройте веб-браузер и перейдите на страницу index.php из того места, где вы установили Rockmongo.
Как видите, на домашней странице перечислены основные сведения о расположении и подключении сервера MongoDB, веб-сервере PHP и настройках MongoDB. Левая панель показывает список баз и коллекций.
Создание баз данных и коллекций
На вкладке Базы данных перечислены все базы данных, доступные на сервере MongoDB. Чтобы создать новую базу данных, нажмите «Создать новую базу данных» на вкладке «Базы данных».
Затем введите имя базы данных и нажмите «Создать» (я назову мой «rockdb»). Вновь созданная база данных появится на левой панели.
Чтобы создать новую коллекцию, нажмите «Создать» под новой базой данных на левой панели и укажите нужное имя для коллекции (я буду использовать «blog_collection»).
Когда вы предоставляете информацию о коллекции, не беспокойтесь о поле Is Capped. Это безопасно оставить без проверки.
Новая коллекция появится на левой панели под базой данных. Вы можете нажать на коллекцию, чтобы перечислить все документы в ней. (Обратите внимание, что Mongo DB создает коллекцию system.indexes по умолчанию при создании первой коллекции в базе данных.)
Вставка документов
Чтобы вставить документы, нажмите вкладку «Вставка», а затем название коллекции.
Мы можем указать новую структуру документа в виде JSON или PHP-массива. Выбор любого формата не имеет никакого значения для сформированного документа, это просто вопрос комфорта для разработчиков.
После указания документа нажмите «Сохранить». Точно так же продолжайте и вставьте другие документы.
Чтобы просмотреть документы внутри коллекции, нажмите на коллекцию на левой панели, и вы увидите список всех документов в области содержимого. Записи, которые были добавлены последними, появятся первыми.
Обновление, удаление и дублирование документов
Вы можете обновить, удалить или продублировать любой документ, щелкнув соответствующие параметры в каждом документе. Нажатие на любую из ссылок переведет документ в режим редактирования, в котором вы можете вносить изменения в JSON или PHP, как вы делали ранее.
Запрос документов
Запрос к базе данных является одной из важных функций любого инструмента администрирования базы данных. Всякий раз, когда вы нажимаете на коллекцию, в верхней части страницы вы найдете текстовую область для выполнения запросов к ней.
Как и документы, выражения запросов также можно указывать в виде JSON или PHP-массива. В раскрывающемся списке доступны три параметра действий: findAll, remove и edit.
Использование объяснения
Это одна из самых полезных функций и, вероятно, та, которая мне больше всего нравится в Rockmongo. Запрос объяснения часто используется для анализа запросов и использования их индексов. Как показано ниже, вы можете указать свой запрос на поиск и затем нажать на кнопку Объяснить. Это даст все детали курсора для запроса.
Импорт и экспорт баз данных
Функции импорта и экспорта полезны, когда вы хотите сделать резервную копию базы данных. Функциональность импорта / экспорта в Rockmongo выполняет ту же задачу, что и функции mongoimport и mongoexport.
Чтобы экспортировать базу данных или коллекцию, перейдите на вкладку «Экспорт». Установите все флажки для коллекций, которые вы хотите экспортировать. Проверьте также параметр «Загрузить» и нажмите «Экспорт». Это даст вам загружаемый файл JavaScript, содержащий всю экспортированную базу данных.
Чтобы импортировать данные в другую базу данных, перейдите в эту базу данных и нажмите на вкладку «Импорт». Выберите файл JS, который вы только что загрузили, и весь набор данных будет импортирован в базу данных.
Вывод
В Rockmongo есть много других функций, которые, я уверен, вы захотите изучить, как только начнете работать с ним. В этой статье я рассмотрел только наиболее часто используемые функции, которые помогут вам начать работу с ним. Если у вас есть какие-либо вопросы, связанные со статьей, не стесняйтесь оставлять свои комментарии!
В этом руководстве мы обсудим, как подключиться к серверу MongoDB, используя различные параметры.
Запустить сервер MongoDB
В предыдущем уроке мы уже обсуждали, как запустить сервер MongoDB , вам нужно выполнить mongod из папки bin вашей установочной папки MongoDB.
После того, как вы выполните это, он прекратит печатать любой вывод после печати некоторой необходимой информации и ждет соединения. Как только соединение создано, начинается печать информации журнала.
Вы можете использовать MongoDB Shell для подключения к MongoDB Server. Вы также можете использовать любой поддерживаемый язык программирования, например PHP. Но пока мы увидим, как создать соединение с помощью оболочки, и обсудим, как это сделать с помощью PHP, в следующем уроке.
подключение к MongoDB Server из оболочки
Чтобы подключиться к серверу MongoDB, вам необходимо выполнить следующую команду (в ее самой простой форме, без каких-либо других опций). Помните, что localhost - это имя хоста, и эта опция обязательна.
Вы увидите вывод, как показано ниже, как только вы выполните команду выше.
Если вы посмотрите окно командной строки, с которого вы запустили Сервер MongoDB, вы увидите следующее.
Последняя строка (помеченная) печатается после успешного подключения к серверу MongoDB.
Формат команды подключения MongoDB
Подключитесь и войдите с именем пользователя и паролем в базу данных по умолчанию
Чтобы подключиться к серверу MongoDB, используя имя пользователя и пароль, вы должны использовать « [email protected] / dbname». Где имя пользователя - это имя пользователя, пароль - это пароль для этого пользователя.
С помощью приведенной выше команды пользователь «mongo_admin» с паролем «AxB6_w3r» подключается к базе данных по умолчанию на локальном хосте. Вывод вышеуказанной команды выглядит следующим образом:
Подключиться и войти с именем пользователя и паролем к определенной базе данных
Чтобы подключиться к серверу MongoDB, используя имя пользователя и пароль, вы должны использовать « [email protected] / dbname». Где username - это имя пользователя, пароль - это пароль для этого пользователя, а dbname - это база данных, к которой вы хотите подключиться.
Примечание. Вы можете использовать несколько имен хостов для подключения с помощью одной команды.
Подключитесь и войдите с именем пользователя и паролем в конкретную базу данных на конкретном порту
Чтобы подключиться к серверу MongoDB, используя имя пользователя и пароль, вы должны использовать « [email protected] / dbname». Где username - это имя пользователя, пароль - это пароль для этого пользователя, dbname - это база данных, к которой вы хотите подключиться, и при желании вы можете указать номер порта, к которому вы хотите подключиться.
Для подключения к нескольким серверам MongoDB, работающим на разных именах хостов
Чтобы подключиться к нескольким серверам MongoDB, работающим на разных именах хостов, используйте следующие команды. Такая ситуация может возникнуть при использовании «наборов реплик». Набор реплик состоит из двух или более узлов, которые являются копиями друг друга. Набор реплик может автоматически определять один главный узел. Этот механизм хорош, чтобы гарантировать, что в случае сбоя сервера восстановление возможно.
Для подключения к нескольким серверам MongoDB, работающим на одинаковых именах хостов, но на разных портах
Чтобы подключиться к нескольким серверам MongoDB, работающим с одинаковыми именами хостов, но с разными портами, используйте следующую команду. Это также используется для наборов реплик.
Опции
Есть несколько вариантов, которые можно использовать вместе со стандартом формата, описанным выше. Следующая таблица описывает их:
MongoDB — это NoSQL-база данных, которую в том или ином виде используют более четверти разработчиков. MongoDB и другие NoSQL-базы данных привлекают своей гибкостью: вместо жесткой схемы и вертикального масштабирования, у вас есть возможность развивать схему постепенно и масштабироваться горизонтально. Компания MongoDB вышла на биржу в 2017 году и сегодня стоит более 17 миллиардов долларов.
Документные базы данных используют вместо реляционных таблиц и столбцов вложенные пары ключ-значение. Одно из преимущество такого подхода в том, что вам не нужно преобразовать данные для взаимодействия с фронтендом — данные уже хранятся в необходимом виде (плюс-минус .map или .reduce).
Работа с MongoDB через командную строку не всегда удобна, и в этом посте мы рассмотрим доступные графические инструменты.
Mongo Shell против GUI
Самый простой способ работы с MongoDB — это mongo shell. Его можно использовать для запросов, изменения данных и администрирования.
MongoDB Shell входит в состав дистрибутива MongoDB Server, так что, если вам удобно работать с командной строкой, то у вас все готово. Но, скорее всего, обход объектов и написание длинных запросов в командной строке вам быстро наскучит, поэтому mongo shell обычно используется для административных задач и когда нужно что-то быстро посмотреть.
Безусловно, с Mongo можно работать исключительно из командной строки, но работа даже с наборами данных среднего размера становится некомфортной.
С помощью графических инструментов можно визуализировать данные и редактировать запросы без использования командной строки (или с ней — подробности ниже).
Во всех GUI-инструментах MongoDB есть сходные возможности:
Визуальный редактор запросов: возможность создания запросов с помощью drag-and-drop.
Автодополнение запроса (autocomplete): автоматические предложения для имен коллекций, полей, методов и операторов.
Aggregation framework: пошаговое создание и тестирование запросов, с последующим экспортом в код.
Аналитика сервера и запросов: анализ запросов и производительности сервера.
Импорт данных из реляционной базы данных в MongoDB: автоматизация утомительной и подверженной ошибкам передачи данных между разными типами баз данных.
Далее рассмотрим лучшие графические инструменты для MongoDB на 2021 год. У каждого из них есть свои особенности, выделяющие одни среди других. Выбор зависит от масштабов вашего проекта, необходимых функций и бюджета.
MongoDB Compass
Описание
У MongoDB есть "родной" многоплатформенный GUI под названием Compass. Он предоставляет возможность навигации по базе данных без написания запросов. Полнофункциональная версия Compass недавно стала полностью бесплатной, а исходный код доступен на GitHub.
Особенности MongoDB Compass:
Визуализация схемы: Compass визуализирует коллекции для удобного анализа данных.
Визуальный редактор для CRUD-операций: выполнение CRUD-операций без написания запросов.
Геопространственные данные: создание запросов к картографическим данным с помощью интуитивного интерфейса с представлением результатов как в виде графиков, так и в виде JSON-документов.
Валидация: удобный редактор правил JSON Schema с подсказками.
Главная фича — плагины
Одна из особенностей MongoDB Compass — API для плагинов. Комьюнити Compass написало множество классных плагинов, которые могут генерировать тестовые данные, инспектировать пользователей базы данных и даже проверять статус шардов. Если вы нужного плагина нет, то можно написать свой, используя шаблон.
TablePlus
Описание
TablePlus — это современный нативный GUI-инструмент для реляционных баз данных, таких как MySQL, PostgreSQL, SQLite, и NoSQL-баз данных, таких как MongoDB. Команда TablePlus состоит из основателя Генри Фама (Henry Pham) и разработчика Ракуна Тая (Raccoon Thai). Команда, как и сообщество пользователей, довольно активны на GitHub.
Настраиваемый интерфейс: настройка конфигурации и внешнего вида.
in-line редактирование: возможность редактирования данных и структуры таблиц одним щелчком мыши.
Главная фича — безопасность базы данных
С помощью TablePlus можно подключиться к базе данных через защищенное соединение. Также TablePlus обеспечивает безопасное хранение учетных данных в хранилище ключей вашего устройства и поставляется со встроенным SSH. Помимо этого, есть поддержка многоступенчатой аутентификации и встроенный libssh.
Robo 3T
Описание
Robo 3T — это легковесный многоплатформенный GUI для MongoDB с открытым исходным кодом. Компания 3T Software Labs купила Robomongo в 2017 году и провела ребрендинг.
Проект продолжает развиваться и набрал восемь тысяч звезд на Github. Одно из преимуществ этого инструмента — большое комьюнити. Если возникнут проблемы, можно найти множество туториалов, руководств и форумов.
Особенности Robo 3T:
Автодополнение кода: хотя Robo 3T не обладает возможностями IntelliShell (см. Studio 3T ниже), у него есть полезная функция автодополнения в рантайме, которая работает через внутреннюю виртуальную машину.
Отзывчивый пользовательский интерфейс: все операции выполняются асинхронно, поэтому приложение никогда не будет зависать при длительных операциях.
Главная фича — встроенный MongoDB shell
Многие из графических инструментов MongoDB эмулируют mongo shell, но здесь он встроенный. Встроенный mongo shell обладает большей функциональностью по сравнению с эмулируемым, поскольку эмуляторы обычно работают поверх предоставленного API, тогда как встроенный shell работает напрямую с MongoDB.
Studio 3T
Описание
Studio 3T, ранее MongoChef — более мощная, профессиональная версия Robo 3T, принадлежащая той же компании 3T Software Labs. Studio 3T — это больше, чем просто графический инструмент MongoDB, это также IDE и клиент. Бесплатной версии Studio 3T нет (если не считать Robo 3T), а цены начинаются с 149$ в год на пользователя (редакция Core). В редакции Core отсутствуют функции, которые есть в более дорогих версиях, такие как импорт / экспорт SQL, SQL-запросы и schema explorer.
Особенности Studio 3T:
IntelliShell: интеллектуальный встроенный mongo shell с автодополнением, поддерживающий функции стандартной библиотеки JavaScript, коллекции, поля, операторы и методы.
Три способа представления данных:
Табличный — в виде строк и столбцов.
Древовидный — в виде иерархии.
JSON — в виде JSON-документов.
Импорт данных: импорт из SQL-баз данных, Oracle и Sybase.
Главная фича — четыре способа написания запросов к MongoDB
Studio 3T предоставляет наибольшее количество вариантов создания запросов к базе данных. Вы можете выполнять запросы следующими способами:
SQL-запросы: можно писать запросы к MongoDB с использованием SQL (круто!).
Mongo shell: встроенная технология IntelliShell обеспечивает удобные функции автодополнения.
Редактор агрегирования (Aggregation Editor): написание сложных запросов.
Визуальный конструктор запросов: редактор с возможностью drag-and-drop для создания запросов (можно использовать вместе с IntelliShell)
Даже если вы не знакомы с документными базами данных, языками запросов и командной строкой, то все равно сможете использовать Studio 3T для работы с MongoDB.
NoSQLBooster
Описание
NoSQLBooster обладает большим набором функций в платной версии. В бесплатной многое из того, что делает этот GUI таким замечательным, отсутствует. Например, нет автодополнения кода и визуального построителя запросов. Лицензирования по подписке у NoSQLBooster нет, поэтому при покупке он останется вашим навсегда (или до тех пор, пока вы не захотите обновиться).
IntelliSense: аналогично IntelliShell, в Studio 3T при вводе текста отображаются подсказки, предлагая варианты завершения, методы, свойства, переменные, ключевые слова, имена коллекций, имена полей и операторы.
Интерактивные примеры: туториалы с заранее написанными запросами и описанием для изучения MongoDB.
Стоит также упомянуть встроенные сниппеты, предлагающие готовые фрагменты кода, например, для таких операций, как преобразование данных из SQL в MongoDB или для работы с диапазонами дат. Можно также создавать свои сниппеты.
Главная фича — NPM-пакеты в скриптах MongoDB shell
Особенностью NoSQLBooster является уникальная возможность добавить любой NPM-пакет в скрипт MongoDB shell. Некоторые полезные и популярные пакеты, такие как lodash, moment, bluebird, ShellJS, и math.js уже входят в его состав и готовы к использованию.
HumongouS.io
Описание
HumongouS.io — это полностью онлайновый GUI, что позволяет удобно организовать совместную работу. Он подходит как для разработки, так и для администрирования. При его использовании вам не нужно сообщать реквизиты доступа к базе данных — вместо этого вы можете предоставить доступ только к приложению. И также можно получить доступ к данным с мобильных устройств.
Интеллектуальный поиск (smart filters): фильтры коллекций можно сохранять, что обеспечивает быстрый доступ к ним.
Диаграммы и дашборды: очень легко создать диаграммы и дашборды для анализа нужных вам данных.
Главная фича — настраиваемые виджеты
С помощью виджетов можно настроить отображение данных и связать их с определенными коллекциями. Есть виджеты просмотра, форм и макетов. Виджеты просмотра (viewer widgets) позволяют отображать данные в более удобном виде, чем простые строки.
Виджеты форм (form widgets) — это, согласно документации HumongouS.io, "строительные блоки форм". Их можно настроить и сопоставить с любым типом данных в вашей базе данных.
Виджеты макета (layout widgets) — альтернатива стандартному табличному представлению, позволяют отображать специализированные данные.
NoSQL Manager
Описание
NoSQL Manager упрощает навигацию, просмотр и редактирование документов, а также позволяет устанавливать ограничения для максимальной производительности. Вы можете управлять коллекциями, индексами, а также пользователями, ролями и функциями. Поддерживается MongoDB Enterprise, MongoDB в Azure Cosmos DB и Amazon DocumentDB.
Поддержка различных конфигураций хостов: NoSQL Manager поддерживает наборы реплик (Replica Set), соединения к шардированным кластерам и автономным хостам.
Просмотр данных: просмотр и редактирование документов в виде дерева, таблиц и JSON.
SSH-туннелирование: NoSQL Manager может подключаться к MongoDB через SSH-туннель.
Импорт: импорт данных из MySQL и SQL Server.
Главная фича — автодополнение
NoSQL Manager поставляется с MongoDB UI Shell с автодополнением кода, подсветкой синтаксиса и подсказками. Автодополнение подсказывает вам имена коллекций и методов в командах MongoDB Shell по мере ввода команд.
Retool
Описание
Retool — это платформа для разработки внутренних инструментов, на базе которой вы можете создать любой GUI для MongoDB (см. шаблон). Retool позволяет использовать drag-and-drop для построения форм без кодирования и подключаться к чему угодно с помощью REST или GraphQL, что означает возможность создания полнофункционального GUI для MongoDB и реализации любых CRUD-операций.
Производительность: настройка работы Retool с MongoDB занимает всего несколько минут.
Анализ схемы: визуальное представление данных.
Сохранение запросов: запросы можно сохранять и использовать повторно.
Быстрое превращение запросов в готовые инструменты: от запроса до готового фронтенда пара кликов без написания кода.
Главная фича — настраиваемый интерфейс для визуализации данных
Вы можете использовать готовые компоненты Retool (таблицы, кнопки, текстовые поля, поля для поиска) не только для просмотра ваших данных, но и для выполнения любых необходимых CRUD-операций. После настройки источника данных интерфейс создается с помощью drag-and-drop.
Лучший MongoDB GUI для вашего проекта
Как и выбор любого другого инструмента, выбор GUI для MongoDB зависит от ваших целей и потребностей.
Если вы хотите полностью отказаться от командной строки, то Compass будет подходящим выбором. Если простое решение с большим комьюнити — Robo 3T. Если вы знакомы с SQL и хотите продолжать писать запросы на всеми любимом языке запросов, то подойдет NoSQLBooster. А если нужно превратить ваши запросы в готовые утилиты, то попробуйте Retool.
Прошелся по поиску хабра, но не нашел поста о такой проблеме, хотя пару раз комментарии посвященных людей всплывали.
У нас несколько VPS'ок, где используем MongoDB, ОС обычно дебиан 6/убунту, практически все ставим из пакетов, благо всего хватает. На днях, проверяя старые сервера, обнаружил
Для меня конечно было шоком! Попытка получить удаленный доступ увенчалась успехом
Залез в /etc/mongodb.conf, думая что кто-то из коллег мог себе открыть доступ, но ни слова об этом не было. Надеясь, что тот же коллега просто удалил подобную запись, залез в конфиг на локальной машине (дебиан 6) и тоже не обнаружил ничего про удаленный доступ. Пробежался по всем известным сайтам с монгоДБ и везде смог авторизоваться.
Сразу начал гуглить проблему и наконец нашел на офф. сайте net.bindIp
Default: All interfaces.… versionchanged:: 2.6.0 The deb and rpm packages include a default configuration file that sets > to 127.0.0.1.
Specifies the IP address that mongos or mongod binds to in order to listen for connections from applications. You may attach mongos or mongod to any interface. When attaching mongos or mongod to a publicly accessible interface, ensure that you have implemented proper authentication and firewall restrictions to protect the integrity of your database.
To bind to multiple IP addresses, enter a list of comma separated values.
Прошелся по всем серверам, в /etc/mongodb.conf добавил строчку
После чего удаленный доступ был закрыт
Разбор полетов
Решил разобраться как же так получилось, конечно сразу вспомнил про mysql, у которого по-умолчанию удаленный доступ закрыт, и конечно для многих, в том числе и меня, было разумно думать, что и монгоДБ здесь особых изяществ не изобретала. Поднял с нуля debian 7.4.0 (последний стабильный), и из пакета поставил монгоДБ, в конфигах уже обнаружил
На память вспоминаю, что ставили из репозитария от монгоДБ по статье на офф сайте Install MongoDB on Debian, так как хостеры давали VPS только на базе Debian 6, с очень старой версией МонгоДБ. После установки из их репозитария в конфигах опять же ничего не обнаружил про удаленный доступ. В самой статье тоже ничего не пишут по этому поводу, что было очень даже обидно.
Проверка соседей
На что обнаружил очень приличный список открытых баз данных МонгоДБ, некоторые конечно были на авторизации, некоторые просто для бэкапа, но все же открыты.
Взлом?
Итоги
Конечно кто-то говорит, что это все для скорости, что системный администратор по-умолчанию должен сам за всем следить. Но вот только VPS'ки очень даже доступны, кучу статей где хвалят новые базы данных и другой софт, на что многие простые программисты соглашаются на работу с VPS, не имея большого административного опыта. От разработчиков монгоДБ я хотя бы ожидал закомментированную памятку в конфигах, раз не хотят по-умолчанию закрыть удаленный доступ
Читайте также: