Основные команды администрирования MongoDB для начинающих
MongoDB, ведущая документо-ориентированная база данных NoSQL, известна своей гибкостью и масштабируемостью. Хотя разработчики часто сосредоточены на операциях CRUD (создание, чтение, обновление, удаление), эффективное управление средой базы данных в значительной степени зависит от понимания основных команд администрирования. Это руководство знакомит начинающих с основными командами, необходимыми для управления базой данных, администрирования пользователей и проверки состояния системы, обеспечивая бесперебойную и безопасную работу вашего экземпляра MongoDB.
Овладение этими задачами администрирования имеет решающее значение для всех, кто выходит за рамки простой локальной разработки в производственные среды. Мы рассмотрим, как взаимодействовать с оболочкой mongosh для управления базами данных, коллекциями, пользователями и выполнения необходимой диагностики системы.
Доступ к оболочке MongoDB (mongosh)
Основным интерфейсом для выполнения команд администрирования является оболочка MongoDB, к которой обычно обращаются с помощью команды mongosh. Именно здесь вы выполняете команды на основе JavaScript непосредственно против вашего экземпляра MongoDB.
Чтобы подключиться к локальному экземпляру MongoDB, работающему на порту по умолчанию (27017), просто введите:
mongosh
После подключения вы увидите приглашение >, указывающее, что вы готовы вводить команды.
Команды управления базами данных
Управление тем, какая база данных используется в данный момент, и просмотр существующих баз данных являются фундаментальными задачами администрирования.
Отображение всех баз данных
Чтобы увидеть список всех баз данных, присутствующих в данный момент на сервере MongoDB, используйте команду show dbs:
> show dbs
admin 40.00 KiB
config 72.00 KiB
local 72.00 KiB
myAppDB 100.00 KiB
Переключение баз данных
Прежде чем вы сможете создать базу данных или коллекцию, вам необходимо переключить контекст на нужную базу данных с помощью команды use. Если база данных не существует, MongoDB создаст ее неявно при первой вставке данных.
> use myAppDB
switched to db myAppDB
Просмотр текущей базы данных
Чтобы подтвердить, в каком контексте базы данных вы в данный момент работаете, используйте db:
> db
myAppDB
Удаление базы данных
Внимание: Это действие необратимо удалит все данные в указанной базе данных. Используйте с крайней осторожностью, особенно в производственных средах.
Чтобы удалить текущую базу данных (ту, которую возвращает db):
> db.dropDatabase()
{ "dropped" : "myAppDB", "ok" : 1 }
Команды управления коллекциями
Коллекции аналогичны таблицам в реляционных базах данных. Управление ими осуществляется просто с помощью сокращения db.
Отображение коллекций
При использовании определенной базы данных отобразите все коллекции внутри нее с помощью show collections (или эквивалентной db.getCollectionNames() в старых версиях):
> show collections
users
products
orders
Создание коллекций
Коллекции часто создаются автоматически при первой вставке. Однако вы можете явно создать одну с помощью db.createCollection() для контроля над правилами проверки или ограничениями.
// Создание стандартной коллекции с именем 'logs'
> db.createCollection("logs")
{ "ok" : 1 }
Удаление коллекции
Чтобы полностью удалить коллекцию:
> db.logs.drop()
true
Администрирование пользователей и безопасности
Для любой базы данных, предназначенной для производственного использования, защита доступа с помощью аутентификации пользователей является обязательной. Управление пользователями обычно выполняется в базе данных admin или в конкретной базе данных, где пользователь должен иметь разрешения.
Переключение на базу данных Admin для создания пользователя
Стандартной практикой является создание административных пользователей в базе данных admin, хотя пользователи с ролевым доступом могут быть созданы в базах данных приложений.
> use admin
switched to db admin
Создание пользователя
Используйте db.createUser() для добавления нового пользователя. Это требует указания имени пользователя, надежного пароля и назначенных ролей.
> db.createUser(
... {
... user: "appAdmin",
... pwd: passwordPrompt(), // Безопасно запрашивает пароль
... roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWrite" ]
... }
... )
- Совет: Использование
passwordPrompt()настоятельно рекомендуется вместо встраивания паролей в открытом тексте в скриптах.
Отображение пользователей
Чтобы увидеть существующих пользователей в текущей базе данных:
> show users
Мониторинг и диагностика системы
Администраторы нуждаются в способах проверки работоспособности, состояния и конфигурации работающего экземпляра MongoDB.
Проверка состояния сервера
Команда serverStatus возвращает исчерпывающий документ с подробной статистикой о работе сервера, включая использование памяти, соединения и операции.
> db.serverStatus()
// Вывод будет представлять собой большой JSON-документ с метриками.
Просмотр текущих соединений
Чтобы увидеть активные клиентские соединения, вы можете запросить команду currentOp или посмотреть в выводе serverStatus в разделе подключений. Прямой способ просмотра текущих операций:
> db.currentOp()
Проверка конфигурации
Чтобы просмотреть настройки конфигурации, применяемые к экземпляру в данный момент:
> db.getMongo().getDB('admin').runCommand({ getParameter: 1, all: 1 })
Резюме и следующие шаги
Эти основные команды, охватывающие переключение баз данных, управление коллекциями, создание пользователей и базовый мониторинг, составляют основу эффективного администрирования MongoDB. В то время как mongosh обеспечивает немедленную обратную связь, продвинутый мониторинг часто требует интеграции с MongoDB Compass или использования интерфейса MongoDB Atlas для визуальной диагностики.
Лучшая практика: Всегда подключайтесь с учетными данными и ограничивайте роли пользователей минимально необходимыми разрешениями (Принцип наименьших привилегий).
Начните практиковать эти команды в непроизводственной среде, чтобы обрести уверенность перед управлением критически важными хранилищами данных.