Подключение к кластеру Yandex StoreDoc из приложений
К кластеру Yandex StoreDoc можно подключиться с помощью инструментов командной строки, из графических IDE и Docker-контейнера. О подключении из кода вашего приложения см. Примеры кода.
В примерах ниже предполагается, что SSL-сертификат root.crt расположен в директории:
~/.mongodb/для Ubuntu;$HOME\.mongodbдля Windows.
При успешном подключении к кластеру и выполнении тестового запроса будет выведено имя БД, к которой было выполнено подключение.
Инструменты командной строки
Примеры кода с заполненным FQDN хоста доступны в консоли управления
Способ настройки зависит от того, включено ли в кластере шардирование.
Linux (Bash)
Перед подключением установите утилиту MongoDB Shell.
Для нешардированного кластера:
mongosh --norc \
--tls \
--tlsCAFile ~/.mongodb/root.crt \
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--tls \
--tlsCAFile ~/.mongodb/root.crt \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
После подключения выполните команду db.
Для нешардированного кластера:
mongosh --norc \
--ssl \
--sslCAFile ~/.mongodb/root.crt \
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--ssl \
--sslCAFile ~/.mongodb/root.crt \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
После подключения выполните команду db.
Для нешардированного кластера:
mongosh --norc \
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
После подключения выполните команду db.
mongosh "mongodb+srv://<имя_пользователя_БД>:<пароль_пользователя_БД>\
@<идентификатор_кластера>.mdb.yandexcloud.net/<имя_БД>"
Идентификатор кластера можно запросить со списком кластеров в каталоге.
После подключения выполните команду db.
При необходимости вы можете добавить к команде параметры подключения, например:
tls— включение TLS-шифрования соединения:trueилиfalse. По умолчанию шифрование включено.tlsCAFile— путь к файлу.pem, содержащему корневые сертификаты центра сертификации.readPreference— с каких хостов выполнять чтение:primary— только с первичной реплики (мастера);primaryPreferred— с мастера, а если он недоступен — с вторичных реплик;secondary— только с вторичных реплик;secondaryPreferred— с вторичных реплик, а если они отсутствуют, то с мастера;nearest— с хоста с наименьшей задержкой.
authSource— имя базы данных, в которой хранятся учетные данные пользователя. По умолчанию совпадает со значением параметра<имя_БД>.appName— имя приложения, отображаемое в логах.
Описание других доступных параметров подключения см. в официальной документации
Строка параметров начинается со знака ?, разделителем является знак &.
Пример команды с параметрами подключения:
mongosh "mongodb+srv://user********:qwe********@c9qng7jhsgtg********.mdb.yandexcloud.net\
/db********?authSource=admin&appName=debug"
Windows (PowerShell)
Перед подключением установите утилиту MongoDB Shell.
Для нешардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>: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 <пароль_пользователя_БД> `
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
После подключения выполните команду db.
Для нешардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
Для шардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
О том, как получить FQDN хоста, см. инструкцию.
После подключения выполните команду db.
mongosh.exe "mongodb+srv://<имя_пользователя_БД>:<пароль_пользователя_БД>`
@<идентификатор_кластера>.mdb.yandexcloud.net/<имя_БД>"
Идентификатор кластера можно запросить со списком кластеров в каталоге.
После подключения выполните команду db.
При необходимости вы можете добавить к команде параметры подключения, например:
tls— включение TLS-шифрования соединения:trueилиfalse. По умолчанию шифрование включено.tlsCAFile— путь к файлу.pem, содержащему корневые сертификаты центра сертификации.readPreference— с каких хостов выполнять чтение:primary— только с первичной реплики (мастера);primaryPreferred— с мастера, а если он недоступен — с вторичных реплик;secondary— только с вторичных реплик;secondaryPreferred— с вторичных реплик, а если они отсутствуют, то с мастера;nearest— с хоста с наименьшей задержкой.
authSource— имя базы данных, в которой хранятся учетные данные пользователя. По умолчанию совпадает со значением параметра<имя_БД>.appName— имя приложения, отображаемое в логах.
Описание других доступных параметров подключения см. в официальной документации
Строка параметров начинается со знака ?, разделителем является знак &.
Пример команды с параметрами подключения:
mongosh.exe "mongodb+srv://user********:qwe********@c9qng7jhsgtg********.mdb.yandexcloud.net`
/db********?authSource=admin&appName=debug"
Подключение из графических 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_Yandex_StoreDoc>:27018,..,<FQDN_хоста_N_Yandex_StoreDoc>: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
Поддержка подключения к кластеру Yandex StoreDoc доступна только в коммерческих редакциях DBeaver
Чтобы подключиться к кластеру:
- Создайте новое соединение с БД:
- Выберите в меню База данных пункт Новое соединение.
- Выберите из списка БД MongoDB.
- Нажмите кнопку Далее.
- Настройте параметры подключения на вкладке Главное:
-
В блоке Адрес переключите Type на
URLи укажите строку подключения.Для нешардированного кластера:
mongodb://<FQDN_хоста_1_Yandex_StoreDoc>:27018,..,<FQDN_хоста_N_Yandex_StoreDoc>:27018/<имя_БД>Для шардированного кластера:
mongodb://<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017/<имя_БД>О том, как получить FQDN хоста, см. инструкцию.
-
В списке Устройство выберите значение
SCRAM-SHA-256(тип шифрования пароля при подключении). -
В блоке Полномочия укажите имя и пароль пользователя БД.
-
- На вкладке SSL:
- Включите настройку Использовать SSL.
- В поле Корневой сертификат укажите путь к сохраненному файлу SSL-сертификата.
- В блоке Настройки включите Пропустить валидацию имени хоста.
- Нажмите кнопку Тест соединения ... для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку Готово, чтобы сохранить настройки соединения с БД.
Подготовка к подключению из Docker-контейнера
Чтобы подключаться к кластеру Yandex StoreDoc из 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. Она понадобится для подключения к кластеру.