Подключение к кластеру PostgreSQL из приложений
К кластеру PostgreSQL можно подключиться с помощью инструментов командной строки, из графических IDE, Yandex WebSQL, pgAdmin 4, Looker Studio и Docker-контейнера. О подключении из кода вашего приложения см. Примеры кода.
Вы можете подключаться к хостам кластера PostgreSQL с использованием SSL-сертификатов. В примерах ниже предполагается, что сертификат root.crt расположен в директории:
/home/<домашняя_директория>/.postgresql/для Ubuntu;$HOME\AppData\Roaming\postgresqlдля Windows.
При необходимости перед подключением настройте группы безопасности кластера.
Инструменты командной строки
Примеры кода с заполненным FQDN хоста доступны в консоли управления
Linux (Bash)
Перед подключением установите зависимости:
sudo apt update && sudo apt install --yes postgresql-client
-
Подключитесь к базе данных:
psql "host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz \ port=6432 \ sslmode=disable \ dbname=<имя_БД> \ user=<имя_пользователя> \ target_session_attrs=read-write"После выполнения команды введите пароль пользователя для завершения процедуры подключения.
-
Для проверки успешности подключения выполните запрос:
SELECT version();
-
Подключитесь к базе данных:
psql "host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz \ port=6432 \ sslmode=verify-full \ dbname=<имя_БД> \ user=<имя_пользователя> \ target_session_attrs=read-write"После выполнения команды введите пароль пользователя для завершения процедуры подключения.
-
Для проверки успешности подключения выполните запрос:
SELECT version();
Windows (PowerShell)
Перед подключением установите PostgreSQL для Windows
-
Установите переменные окружения для подключения:
$Env:PGSSLMODE="disable"; $Env:PGTARGETSESSIONATTRS="read-write" -
Подключитесь к базе данных:
& "C:\Program Files\PostgreSQL\<версия>\bin\psql.exe" ` --host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz ` --port=6432 ` --username=<имя_пользователя> ` <имя_БД>После выполнения команды введите пароль пользователя для завершения процедуры подключения.
-
Для проверки успешности подключения выполните запрос:
SELECT version();
-
Установите переменные окружения для подключения:
$Env:PGSSLMODE="verify-full"; $Env:PGTARGETSESSIONATTRS="read-write" -
Подключитесь к базе данных:
& "C:\Program Files\PostgreSQL\<версия>\bin\psql.exe" ` --host=c-<идентификатор_кластера>.rw.mdb.yandexcloud.kz ` --port=6432 ` --username<имя_пользователя> ` <имя_БД>После выполнения команды введите пароль пользователя для завершения процедуры подключения.
-
Для проверки успешности подключения выполните запрос:
SELECT version();
Подключение с аутентификацией через IAM
К базе данных PostgreSQL можно подключиться с помощью интерфейса командной строки Yandex Cloud (CLI), используя аутентификацию через IAM. Этот метод доступен для аккаунтов на Яндексе, федеративных аккаунтов и локальных пользователей. Подключение с аутентификацией через IAM не требует получения SSL-сертификата или указания FQDN хостов кластера.
Перед подключением установите клиент PostgreSQL:
sudo apt update && sudo apt install --yes postgresql-client
Подготовьте кластер PostgreSQL к подключению:
- Перейдите в сервис Managed Service for PostgreSQL.
- Нажмите на имя нужного кластера.
- Включите публичный доступ для хостов кластера:
- Выберите вкладку Хосты.
- Нажмите значок
в строке первого хоста и выберите пункт Редактировать. - Включите опцию Публичный доступ.
- Повторите операцию для остальных хостов кластера.
- Назначьте роль аккаунту пользователя, который будет подключаться к БД:
- Выберите вкладку Права доступа и нажмите кнопку Назначить роли.
- Введите электронную почту пользователя, к которой привязан аккаунт.
- Нажмите кнопку
Добавить роль и выберите рольmanaged-postgresql.clusters.connector. - Нажмите кнопку Сохранить.
- Создайте пользователя PostgreSQL:
- Выберите вкладку Пользователи.
- Нажмите кнопку Создать пользователя.
- Выберите способ аутентификации IAM.
- Выберите аккаунт, которому была назначена роль
managed-postgresql.clusters.connector. - В поле База данных нажмите значок
. - Выберите базу данных из выпадающего списка.
- Нажмите кнопку Сохранить.
Чтобы подключиться к БД PostgreSQL, выполните команду:
yc managed-postgresql connect <имя_или_идентификатор_кластера> --db <имя_БД>
Подключение из графических IDE
Подключения проверялись в следующем окружении:
- Ubuntu 20.04, DBeaver:
22.2.4; - MacOS Monterey 12.7:
- JetBrains DataGrip:
2023.3.4; - DBeaver Community:
24.0.0.
- JetBrains DataGrip:
Подключаться из графических IDE можно только к хостам кластера в публичном доступе с использованием SSL-сертификата.
Чтобы избежать ошибок при подключении, сохраните сертификат
- Создайте источник данных:
- Выберите в меню File → New → Data Source → PostgreSQL.
- Укажите параметры подключения на вкладке General:
-
User, Password — имя и пароль пользователя БД;
-
URL — строка подключения:
jdbc:postgresql://<особый_FQDN>:6432/<имя_БД>Также в строке подключения можно использовать список FQDN всех хостов кластера:
jdbc:postgresql://<хост_1_PostgreSQL>:6432,...,<хост_N_PostgreSQL>:6432/<имя_БД> -
Нажмите ссылку Download, чтобы загрузить драйвер соединения.
-
- На вкладке SSH/SSL:
- Включите настройку Use SSL.
- В поле CA file укажите путь к файлу SSL-сертификата для подключения.
- Нажмите ссылку Test Connection для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку OK, чтобы сохранить источник данных.
- Создайте новое соединение с БД:
- Выберите в меню База данных пункт Новое соединение.
- Выберите из списка БД PostgreSQL.
- Нажмите кнопку Далее.
- Укажите параметры подключения на вкладке Главное:
- Хост — особый FQDN хоста-мастера или обычный FQDN хоста;
- Порт —
6432; - База данных — имя БД для подключения;
- В блоке Аутентификация укажите имя и пароль пользователя БД.
- На вкладке SSL:
- Включите настройку Использовать SSL.
- В поле Корневой сертификат укажите путь к сохраненному файлу SSL-сертификата.
- Нажмите кнопку Тест соединения ... для проверки подключения. При успешном подключении будут выведены статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку Готово, чтобы сохранить настройки соединения с БД.
Подключение из браузера
Чтобы подключиться к кластеру Managed Service for PostgreSQL, войдите в консоль управления
Для разрешения подключения включите опцию Доступ из консоли управления при создании кластера или изменении его настроек.
Подробнее см. в разделе SQL-запросы.
Подключение из pgAdmin 4
Подключение проверялось для pgAdmin 4
Подключаться из pgAdmin 4 можно только к хостам кластера в публичном доступе с использованием SSL-сертификата.
Создайте новое подключение к серверу:
-
Выберите в меню Object → Register → Server...
-
На вкладке General в поле Name укажите имя, под которым кластер будет отображаться в интерфейсе pgAdmin 4. Имя может быть любым.
-
На вкладке Connection укажите параметры подключения:
- Host name/address — особый FQDN хоста-мастера или обычный FQDN хоста;
- Port —
6432; - Maintenance database — имя БД для подключения;
- Username — имя пользователя, от имени которого выполняется подключение;
- Password — пароль пользователя.
-
На вкладке Parameters:
- Установите параметр SSL mode в значение
verify-full. - Добавьте новый параметр Root certificate и укажите в нем путь к сохраненному файлу SSL-сертификата.
- Установите параметр SSL mode в значение
-
Нажмите кнопку Save, чтобы сохранить настройки подключения к серверу.
Кластер появится в списке серверов в навигационном меню.
Подключение из Looker Studio
Подключаться из Looker Studio
-
Сохраните сертификат сервера
CA.pemв локальную папку. -
В той же папке сгенерируйте сертификат клиента с приватным ключом:
openssl req -newkey rsa:2048 -nodes -keyout private.pem -out cert.pemПри создании сертификата программа предложит изменить ряд настроек. Нажмите Enter, чтобы использовать для них значения по умолчанию.
В локальной папке появятся два файла:
cert.pemиprivate.pem. -
На странице навигации Looker Studio
выберите Создать → Источник данных. -
Выберите PostgreSQL.
-
Заполните поля:
- Имя хоста или IP-адрес — особый FQDN хоста-мастера или обычный FQDN хоста;
- Порт —
6432; - База данных — имя БД для подключения;
- Имя пользователя — имя пользователя, от имени которого выполняется подключение;
- Пароль — пароль пользователя.
-
Выберите опции Включить SSL и Включить аутентификацию клиента.
-
Укажите файлы сертификатов и приватный ключ клиента в соответствующих полях:
- Server certificate — выберите файл
CA.pem. - Client certificate — выберите файл
cert.pem. - Client private key — выберите файл
private.pem.
- Server certificate — выберите файл
-
Нажмите Выполнить аутентификацию.
Подготовка к подключению из Docker-контейнера
Чтобы подключаться к кластеру Managed Service for PostgreSQL из Docker-контейнера, добавьте в Dockerfile строки:
RUN apt-get update && \
apt-get install postgresql-client --yes
Пример подключения из Yandex Serverless Containers см. в практическом руководстве.
RUN apt-get update && \
apt-get install wget postgresql-client --yes && \
mkdir --parents ~/.postgresql && \
wget "https://storage.yandexcloud.kz/cloud-certs/CA.pem" \
--output-document ~/.postgresql/root.crt && \
chmod 0655 ~/.postgresql/root.crt