Подключиться к кластеру PostgreSQL
К кластеру PostgreSQL можно подключиться:
- через терминальный клиент psql;
- графический инструмент для управления базами данных pgAdmin;
- офисные пакеты или приложения с поддержкой ODBC или JDBC;
- программный код.
Для всех способов доступно подключение с SSL и без SSL.
При подключении укажите порт и адрес.
Порты для подключения
Для подключения к PostgreSQL используйте порты:
- 5433 — порт для подключения к выбранной ноде через пулер соединений — позволяет снизить нагрузку на PostgreSQL;
- 5432 — порт для подключения напрямую к процессу PostgreSQL.
Адреса для подключения
Адрес для подключения зависит от подсети кластера и от того, откуда вы подключаетесь. Вы можете выбрать адрес в зависимости от одного из сценариев:
- подключение к кластеру в публичной подсети;
- подключение из приватной подсети к кластеру в приватной подсети;
- подключение из интернета к кластеру в приватной подсети.

Подключение к кластеру в публичной подсети
Если кластер в публичной подсети, к нодам можно подключиться по DNS-адресу или IP-адресу из публичной подсети.
Мы рекомендуем подключаться по DNS-адресу. Для DNS-адресов в кластере используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде. При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.
При подключении по IP-адресу из публичной подсети механизм master discovery не используется. Если одна из реплик станет новым мастером, IP-адрес мастера изменится и подключение по старому IP-адресу перестанет работать.
Вы можете посмотреть адрес для подключения в панели управления.
Подключение из приватной подсети к кластеру в приватной подсети
Если вы подключаетесь из приватной подсети к кластеру в приватной подсети, можно использовать DNS-адрес или приватный IP-адрес.
Мы рекомендуем подключаться по DNS-адресу. Для DNS-адресов в кластере используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде. При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.
При подключении по приватному IP-адресу механизм master discovery не используется. Если одна из реплик станет новым мастером, IP-адрес мастера изменится и подключение по старому IP-адресу перестанет работать.
Чтобы подключиться из другой приватной подсети, сначала подключите обе приватные подсети к облачному роутеру.
Вы можете посмотреть адрес дл я подключения в панели управления.
Подключение из интернета к кластеру в приватной подсети
Если вы подключаетесь к кластеру в приватной подсети из интернета, можно использовать только публичный IP-адрес (Floating IP). Приватная подсеть должна соответствовать требованиям. Если подсеть не соответствует требованиям, подготовьте ее для подключения публичного IP-адреса (Floating IP).
Для публичных IP-адресов (Floating IPs) используется механизм master discovery — адрес привязан к роли ноды, а не к самой ноде. При недоступности мастера одна из реплик становится новым мастером и адрес переходит на новую ноду вместе с ролью.
Вы можете посмотреть адрес для подключения в панели управления.
Посмотреть адрес для подключения
- В панели управления в верхнем меню нажмите Продукты и выберите Облачные базы данных.
- Откройте вкладку Активные.
- Откройте страницу кластера баз данных → вкладка Подключение.
- В блоке Адреса для подключения посмотрите адрес.
Подключиться с SSL
Подключение с использованием TLS(SSL)-шифрования обеспечивает безопасно е соединение между вашим сервером и кластером баз данных.
Bash
PowerShell
Python
PHP
Go
Node.js
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/:mkdir -p ~/.postgresql/
wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
chmod 0600 ~/.postgresql/root.crt -
Подключитесь к кластеру:
psql "host=<host> \
port=<port> \
dbname=<database_name> \
user=<database_user_name> \
sslmode=verify-ca"Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<port>— порт для подключения;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных.
-
В панели управления нажмите Скачать сертификат для скачивания корневого сертификата и поместите его в папку
%APPDATA%\postgresql\. -
Подключитесь к кластеру:
psql "host=<host> `
port=<port> `
dbname=<database_name> `
user=<database_user_name> `
sslmode=verify-ca"Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<port>— порт для подключения;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных.
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/:mkdir -p ~/.postgresql/
wget https://storage.dbaas.selcloud.ru/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=<path>
sslmode=verify-ca
port=<port>
""")
cur = conn.cursor()
cur.execute('SELECT 40+2')
print(cur.fetchone())
cur.close()
conn.close()Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя;<path>— полный путь до корневого сертификата;<port>— порт для подключения.
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/:mkdir -p ~/.postgresql/
wget https://storage.dbaas.selcloud.ru/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=<path>
sslmode=verify-ca
port=<port>
");
$query = 'SELECT 40 + 2';
$result = pg_query($query);
$row = pg_fetch_row($result);
echo $row[0];
pg_close($dbconn);
?>Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя;<path>— полный путь до корневого сертификата;<port>— порт для подключения.
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/:mkdir -p ~/.postgresql/
wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
chmod 0600 ~/.postgresql/root.crt -
Используйте пример подключения:
package main
import (
"context"
"fmt"
"os"
"github.com/jackc/pgx/v4"
)
func main() {
connectionString := fmt.Sprintf("postgres://%s:%s@%s:<port>/%s?sslmode=verify-ca&sslrootcert=%s",
"<database_user_name>",
"<password>",
"<host>",
"<database_name>",
"<path>"
)
conn, err := pgx.Connect(context.Background(), connectionString)
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
os.Exit(1)
}
defer conn.Close(context.Background())
var sum int64
err = conn.QueryRow(context.Background(), "SELECT 40+2").Scan(&sum)
if err != nil {
fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
os.Exit(1)
}
fmt.Println(sum)
}Укажите:
<port>— порт для подключения;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя;<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<database_name>— имя базы данных;<path>— полный путь до корневого сертификата.
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/:mkdir -p ~/.postgresql/
wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
chmod 0600 ~/.postgresql/root.crt -
Установите библиотеку pg:
npm install pg -
Используйте пример подключения:
const fs = require('fs');
const pg = require('pg');
const config = {
host: '<host>',
port: '<port>',
database: '<database_name>',
user: '<database_user_name>',
password: '<password>',
ssl: {
rejectUnauthorized: true,
ca: fs.readFileSync('<path>').toString(),
},
};
const client = new pg.Client(config);
client.connect((error) => {
if (error) throw error;
});
client.query('SELECT 40 + 2 AS sum', (error, res) => {
if (error) throw error;
console.log(res.rows);
client.end();
});Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<port>— порт для подключения;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя;<path>— полный путь до корневого сертификата.
Подключиться без SSL
Bash
PowerShell
Python
PHP
Go
Node.js
-
Откройте CLI.
-
Подключитесь к кластеру:
psql "host=<host> \
port=<port> \
dbname=<database_name> \
user=<database_user_name> \
sslmode=disable"Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<port>— порт для подключения;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных.
-
Откройте CLI.
-
Подключитесь к кластеру:
psql "host=<host> `
port=<port> `
dbname=<database_name> `
user=<database_user_name> `
sslmode=disable"Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<port>— порт для подключения;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных.
-
Установите библиотеку psycopg2:
pip3 install psycopg2-binary -
Используйте пример подключения:
import psycopg2
conn = psycopg2.connect("""
host=<host>
dbname=<database_name>
user=<database_user_name>
password=<password>
port=<port>
""")
cur = conn.cursor()
cur.execute('SELECT 40+2')
print(cur.fetchone())
cur.close()
conn.close()Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя;<port>— порт для подключения.
-
Установите библиотеку pgsql:
apt install php-pgsql -
Используйте пример подключения:
<?php
$dbconn = pg_connect("
host=<host>
dbname=<database_name>
user=<database_user_name>
password=<password>
port=<port>
");
$query = 'SELECT 40 + 2';
$result = pg_query($query);
$row = pg_fetch_row($result);
echo $row[0];
pg_close($dbconn);
?>Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя;<port>— порт для подключения.
Используйте пример подключения:
package main
import (
"context"
"fmt"
"os"
"github.com/jackc/pgx/v4"
)
func main() {
connectionString := fmt.Sprintf("postgres://%s:%s@%s:<port>/%s",
"<database_user_name>",
"<password>",
"<host>",
"<database_name>",
)
conn, err := pgx.Connect(context.Background(), connectionString)
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
os.Exit(1)
}
defer conn.Close(context.Background())
var sum int64
err = conn.QueryRow(context.Background(), "SELECT 40+2").Scan(&sum)
if err != nil {
fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
os.Exit(1)
}
fmt.Println(sum)
}
Укажите:
<port>— порт для подключения;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя;<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<database_name>— имя базы данных.
-
Установите библиотеку pg:
npm install pg -
Используйте пример подключения:
const pg = require('pg');
const config = {
host: '<host>',
port: '<port>',
database: '<database_name>',
user: '<database_user_name>',
password: '<password>',
};
const client = new pg.Client(config);
client.connect((error) => {
if (error) throw error;
});
client.query('SELECT 40 + 2 AS sum', (error, res) => {
if (error) throw error;
console.log(res.rows);
client.end();
});Укажите:
<host>— DNS-адрес или публичный IP-адрес (Floating IP) ноды;<port>— порт для подключения;<database_name>— имя базы данных;<database_user_name>— имя пользователя базы данных;<password>— пароль пользователя.