Подключение к кластеру MongoDB из приложений
К кластеру MongoDB можно подключиться с помощью инструментов командной строки, из графических IDE и Docker-контейнера. О подключении из кода вашего приложения см. Примеры кода.
В примерах ниже предполагается, что SSL-сертификат root.crt
расположен в директории:
/home/<домашняя_директория>/.mongodb/
для Ubuntu;$HOME\.mongodb
для Windows.
При успешном подключении к кластеру и выполнении тестового запроса будет выведено имя БД, к которой было выполнено подключение.
Инструменты командной строки
Примеры кода с заполненным FQDN хоста доступны в консоли управления
Способ настройки зависит от того, включено ли в кластере шардирование.
Linux (Bash)
Перед подключением установите утилиту MongoDB Shell
Для нешардированного кластера:
mongosh --norc \
--tls \
--tlsCAFile /home/<домашняя_директория>/.mongodb/root.crt \
--host '<FQDN_хоста_1_MongoDB>:27018,...,<FQDN_хоста_N_MongoDB>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--tls \
--tlsCAFile /home/<домашняя_директория>/.mongodb/root.crt \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для нешардированного кластера:
mongosh --norc \
--ssl \
--sslCAFile /home/<домашняя_директория>/.mongodb/root.crt \
--host '<FQDN_хоста_1_MongoDB>:27018,...,<FQDN_хоста_N_MongoDB>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--ssl \
--sslCAFile /home/<домашняя_директория>/.mongodb/root.crt \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для нешардированного кластера:
mongosh --norc \
--host '<FQDN_хоста_1_MongoDB>:27018,...,<FQDN_хоста_N_MongoDB>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
После подключения выполните команду db
.
Windows (PowerShell)
Перед подключением установите утилиту MongoDB Shell
Для нешардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_MongoDB>:27018,...,<FQDN_хоста_N_MongoDB>:27018' `
--tls `
--tlsCAFile $HOME\.mongodb\root.crt `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
Для шардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' `
--tls `
--tlsCAFile $HOME\.mongodb\root.crt `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
Для нешардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_MongoDB>:27018,...,<FQDN_хоста_N_MongoDB>:27018' `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
Для шардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
После подключения выполните команду db
.
Подключение из графических IDE
Подключения проверялись в следующем окружении:
- MacOS Big Sur 11.3.
- JetBrains DataGrip:
2021.1
. - DBeaver Enterprise:
21.0
.
Подключаться из графических IDE можно только к хостам кластера в публичном доступе с использованием SSL-сертификата.
Чтобы избежать ошибок при подключении, сохраните сертификат
DataGrip
- Создайте источник данных:
- Выберите в меню File → New → Data Source → MongoDB.
- На вкладке General:
-
Укажите параметры подключения:
-
User, Password — имя и пароль пользователя БД;
-
URL — строка подключения.
Для нешардированного кластера:
mongodb://<FQDN_хоста_1_MongoDB>:27018,..,<FQDN_хоста_N_MongoDB>:27018/<имя_БД>
Для шардированного кластера:
mongodb://<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017/<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
-
-
Нажмите ссылку Download, чтобы загрузить драйвер соединения.
-
- На вкладке SSH/SSL:
- Включите настройку Use SSL.
- В поле CA file укажите путь к файлу SSL-сертификата для подключения.
- Нажмите ссылку Test Connection для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку OK, чтобы сохранить источник данных.
DBeaver
Поддержка подключения к кластеру MongoDB доступна только в коммерческих редакциях DBeaver
Чтобы подключиться к кластеру:
- Создайте новое соединение с БД:
- Выберите в меню База данных пункт Новое соединение.
- Выберите из списка БД MongoDB.
- Нажмите кнопку Далее.
- Настройте параметры подключения на вкладке Главное:
-
В блоке Адрес переключите Type на
URL
и укажите строку подключения.Для нешардированного кластера:
mongodb://<FQDN_хоста_1_MongoDB>:27018,..,<FQDN_хоста_N_MongoDB>:27018/<имя_БД>
Для шардированного кластера:
mongodb://<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017/<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
-
В списке Устройство выберите значение
SCRAM-SHA-256
(тип шифрования пароля при подключении). -
В блоке Полномочия укажите имя и пароль пользователя БД.
-
- На вкладке SSL:
- Включите настройку Использовать SSL.
- В поле Корневой сертификат укажите путь к сохраненному файлу SSL-сертификата.
- В блоке Настройки включите Пропустить валидацию имени хоста.
- Нажмите кнопку Тест соединения ... для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку Готово, чтобы сохранить настройки соединения с БД.
Подготовка к подключению из Docker-контейнера
Чтобы подключаться к кластеру Managed Service for MongoDB из Docker-контейнера с SSL, добавьте в Dockerfile строки:
RUN apt-get update && \
apt-get install wget --yes && \
mkdir --parents ~/.mongodb && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
--output-document ~/.mongodb/root.crt && \
chmod 0644 ~/.mongodb/root.crt
Чтобы подключаться без SSL, дополнительно настраивать Dockerfile не нужно.
После запуска Docker-контейнера перейдите в него и установите утилитуmongosh
. Она понадобится для подключения к кластеру.