Подключиться к кластеру PostgreSQL
К кластеру облачных баз данных PostgreSQL можно подключиться по DNS-адресу, приватному IP-адресу и публичному IP-адресу.
Мы рекомендуем подключаться по DNS-адресу, потому что DNS-адреса соответствуют ролям нод и ведут на актуальные IP-адреса мастера и реплик. IP-адреса соответствуют конкретным нодам. В случае недоступности мастера одна из реплик возьмет на себя его роль, IP-адрес мастера изменится, и подключение по IP перестанет работать.
Если кластер подключен к приватной подсети и вы хотите работать с ним через DNS, подключите подсеть кластера к облачному роутеру с доступом к внешней сети. Используйте инструкцию Настроить доступ в интернет через облачный роутер.
Если кластер подключен к приватной сети и вам нужно настроить доступ к ноде из интернета, подключите публичный IP-адрес.
Порты
Для подключения к PostgreSQL используйте порты:
- 5433 — порт для подключения к выбранной ноде через пулер соединений — позволяет снизить нагрузку на PostgreSQL;
- 5432 — порт для подключения напрямую к процессу PostgreSQL.
Способы подключения
- через терминальный клиент psql;
- через графические инструменты для управления базами данных: pgAdmin или офисный пакет с поддержкой ODBC или JDBC;
- из программного кода с SSL и без SSL.
Для всех способов доступно подключение с SSL-сертификатом.
Посмотреть адрес для подключения
- В панели управления перейдите в раздел Облачная платформа → Базы данных.
- Откройте страницу кластера баз данных → вкладка Подключение.
- В блоке Адреса для подключения посмотрите адрес.
Подключиться с SSL
Подключение с использованием TLS/SSL шифрования обеспечивает безопасное соединение между вашим сервером и кластером баз данных.
Bash
PowerShell
Python
PHP
Go
Node.js
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/
:mkdir -p ~/.postgresql/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.postgresql/root.crt
chmod 0600 ~/.postgresql/root.crt -
Подключитесь к кластеру:
psql --host=<host> \
--port=<port> \
--user=<database_user_name> \
--dbname=<database_name> \
--sslmode=verify-caУкажите:
<host>
— DNS-адрес ноды;<port>
— порт для подключения;<database_user_name>
— имя пользователя базы данных;<database_name>
— имя базы данных.
-
В панели управления нажмите Скачать сертификат для скачивания корневого сертификата и поместите его в папку
%APPDATA%\postgresql\
-
Подключитесь к кластеру:
psql --host=<host> \
--port=<port> \
--user=<database_user_name> \
--dbname=<database_name> \
--sslmode=verify-caУкажите:
<host>
— DNS-адрес ноды;<port>
— порт для подключения;<database_user_name>
— имя пользователя базы данных;<database_name>
— имя базы данных.
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/
:mkdir -p ~/.postgresql/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.postgresql/root.crt
chmod 0600 ~/.postgresql/root.crt -
Установите библиотеку psycopg2:
pip3 install psycopg2-binary
-
Используйте пример подключения:
import psycopg2
conn = psycopg2.connect("""
host=<host>
dbname=<database_name>
user=<database_user_name>
password=<password>
sslrootcert=<full_path_to_root_certificate>
sslmode=verify-ca
port=<port>
""")
cur = conn.cursor()
cur.execute('SELECT 40+2')
print(cur.fetchone())
cur.close()
conn.close()Укажите:
<host>
— DNS-адрес ноды;<database_name>
— имя базы данных;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<full_path_to_root_certificate>
— полный путь до корневого сертификата;<port>
— порт для подключения.
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/
:mkdir -p ~/.postgresql/
wget https://storage.dbaas.servercore.com/CA.pem -O ~/.postgresql/root.crt
chmod 0600 ~/.postgresql/root.crt -
Установите библиотеку pgsql:
apt install php-pgsql
-
Используйте пример подключения:
<?php
$dbconn = pg_connect("
host=<host>
dbname=<database_name>
user=<database_user_name>
password=<password>
sslrootcert=<full_path_to_root_certificate>
sslmode=verify-ca
port=<port>
");
$query = 'SELECT 40 + 2';
$result = pg_query($query);
$row = pg_fetch_row($result);
echo $row[0];
pg_close($dbconn);
?>