Подключиться к кластеру PostgreSQL TimescaleDB
К кластеру облачных баз данных PostgreSQL TimescaleDB можно подключиться по 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);
?>Укажите:
<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 -
Используйте пример подключения:
package main
import (
"context"
"fmt"
"os"
"github.com/jackc/pgx/v4"
)
func main() {
connectionString := fmt.Sprintf("postgres://%s:%s@%s:5432/%s?sslmode=verify-ca&sslrootcert=%s",
"<database_user_name>",
"<password>",
"<host>",
"<database_name>",
"<full_path_to_root_certificate>"
)
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)
}Укажите:
<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<host>
— DNS-адрес ноды;<database_name>
— имя базы данных;<full_path_to_root_certificate>
— полный путь до корневого сертификата.
-
Скачайте корневой сертификат и поместите его в папку
~/.postgresql/
:mkdir -p ~/.postgresql/
wget https://storage.dbaas.servercore.com/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('<full_path_to_root_certificate>').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-адрес ноды;<port>
— порт для подключения;<database_name>
— имя базы данных;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<full_path_to_root_certificate>
— полный путь до корневого сертификата.
Подключиться без SSL
Bash
PowerShell
Python
PHP
Go
Node.js
-
Откройте CLI.
-
Подключитесь к кластеру:
psql --host=<host> \
--port=<port> \
--user=<database_user_name> \
--dbname=<database_name> \
--sslmode=disableУкажите:
<host>
— DNS-адрес ноды;<port>
— порт для подключения;<database_user_name>
— имя пользователя базы данных;<database_name>
— имя базы данных.
-
Откройте CLI.
-
Подключитесь к кластеру:
psql --host=<host> \
--port=<port> \
--user=<database_user_name> \
--dbname=<database_name> \
--sslmode=disableУкажите:
<host>
— DNS-адрес ноды;<port>
— порт для подключения;<database_user_name>
— имя пользователя базы данных;<database_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-адрес ноды;<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-адрес ноды;<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:5432/%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)
}
Укажите:
<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя;<host>
— DNS-адрес ноды;<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-адрес ноды;<port>
— порт для подключения;<database_name>
— имя базы данных;<database_user_name>
— имя пользователя базы данных;<password>
— пароль пользователя.