---
title: 'Подключиться к кластеру PostgreSQL TimescaleDB'
sidebar_label: 'Подключиться к кластеру'
sidebar_position: 9
description: 'Как подключиться к кластеру PostgreSQL TimescaleDB с SSL-сертификатом или без SSL-сертификата в консоли и из разных языков программирования'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from 'docs-kit/components'
import ConnectionAddresses from '@site/docs/_partials/managed-databases/common/connection-addresses.mdx'

# Подключиться к кластеру PostgreSQL TimescaleDB

К кластеру PostgreSQL TimescaleDB можно подключиться:

* через консольный клиент psql;
* через графические инструменты для управления базами данных: pgAdmin или офисный пакет с поддержкой ODBC или JDBC;
* из программного кода.

Для всех способов доступно подключение [с SSL](#connect-with-ssl) и [без SSL](#connect-without-SSL).

Для подключения используйте [порт](#connection-ports) и [адрес](#connection-addresses).

## Порты для подключения \{#connection-ports}

Для подключения к PostgreSQL TimescaleDB используйте порты:

* 5433 — порт для подключения к выбранной ноде через [пулер соединений](/managed-databases/timescaledb/connection-pooler.mdx) — позволяет снизить нагрузку на PostgreSQL TimescaleDB;
* 5432 — порт для подключения напрямую к процессу PostgreSQL TimescaleDB.

## Адреса для подключения \{#connection-addresses}

<ConnectionAddresses DatabaseName="PostgreSQL TimescaleDB" slug="timescaledb" />

## Подключиться с SSL \{#connect-with-ssl}

Подключение с использованием TLS(SSL)-шифрования обеспечивает безопасное соединение между вашим сервером и кластером баз данных.

<Tabs queryString="connect-with-ssl">
  <TabItem value="bash" default>
    <TabItemLabel>
      Bash
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.postgresql/`:

       ```bash
       mkdir -p ~/.postgresql/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
       chmod 0600 ~/.postgresql/root.crt
       ```

    2. Подключитесь к кластеру:

       ```bash
       psql "host=<host> \
             port=<port> \
             dbname=<database_name> \
             user=<database_user_name> \
             sslmode=verify-ca"
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных.
  </TabItem>

  <TabItem value="powershell">
    <TabItemLabel>
      PowerShell
    </TabItemLabel>

    1. В [панели управления](https://my.selectel.ru/vpc/default/dbaas/) нажмите **Скачать сертификат** для скачивания корневого сертификата и поместите его в папку `%APPDATA%\postgresql\`.
    2. Подключитесь к кластеру:

       ```bash
       psql "host=<host> `
             port=<port> `
             dbname=<database_name> `
             user=<database_user_name> `
             sslmode=verify-ca"
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных.
  </TabItem>

  <TabItem value="python">
    <TabItemLabel>
      Python
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.postgresql/`:

       ```bash
       mkdir -p ~/.postgresql/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
       chmod 0600 ~/.postgresql/root.crt
       ```

    2. Установите библиотеку psycopg2:

       ```bash
       pip3 install psycopg2-binary
       ```

    3. Используйте пример подключения:

       ```python
       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-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных;
       * `<password>` — пароль пользователя;
       * `<path>` — полный путь до корневого сертификата;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="php">
    <TabItemLabel>
      PHP
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.postgresql/`:

       ```bash
       mkdir -p ~/.postgresql/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
       chmod 0600 ~/.postgresql/root.crt
       ```

    2. Установите библиотеку pgsql:

       ```bash
       apt install php-pgsql
       ```

    3. Используйте пример подключения:

       ```php
       <?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-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных;
       * `<password>` — пароль пользователя;
       * `<path>` — полный путь до корневого сертификата;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="go">
    <TabItemLabel>
      Go
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.postgresql/`:

       ```bash
       mkdir -p ~/.postgresql/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
       chmod 0600 ~/.postgresql/root.crt
       ```

    2. Используйте пример подключения:

       ```go
       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>` — [порт для подключения](#connection-ports);
       * `<database_user_name>` — имя пользователя базы данных;
       * `<password>` — пароль пользователя;
       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<database_name>` — имя базы данных;
       * `<path>` — полный путь до корневого сертификата.
  </TabItem>

  <TabItem value="nodejs">
    <TabItemLabel>
      Node.js
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.postgresql/`:

       ```bash
       mkdir -p ~/.postgresql/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
       chmod 0600 ~/.postgresql/root.crt
       ```

    2. Установите библиотеку pg:

       ```bash
       npm install pg
       ```

    3. Используйте пример подключения:

       ```js
       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-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных;
       * `<password>` — пароль пользователя;
       * `<path>` — полный путь до корневого сертификата.
  </TabItem>
</Tabs>

## Подключиться без SSL \{#connect-without-SSL}

<Tabs queryString="connect-without-ssl">
  <TabItem value="bash" default>
    <TabItemLabel>
      Bash
    </TabItemLabel>

    1. Откройте CLI.
    2. Подключитесь к кластеру:

       ```bash
       psql "host=<host> \
             port=<port> \
             dbname=<database_name> \
             user=<database_user_name> \
             sslmode=disable"
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных.
  </TabItem>

  <TabItem value="powershell">
    <TabItemLabel>
      PowerShell
    </TabItemLabel>

    1. Откройте CLI.
    2. Подключитесь к кластеру:

       ```bash
       psql "host=<host> `
             port=<port> `
             dbname=<database_name> `
             user=<database_user_name> `
             sslmode=disable"
       ```

       Укажите:

       * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных.
  </TabItem>

  <TabItem value="python">
    <TabItemLabel>
      Python
    </TabItemLabel>

    1. Установите библиотеку psycopg2:

       ```bash
       pip3 install psycopg2-binary
       ```

    2. Используйте пример подключения:

       ```python
       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-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных;
       * `<password>` — пароль пользователя;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="php">
    <TabItemLabel>
      PHP
    </TabItemLabel>

    1. Установите библиотеку pgsql:

       ```bash
       apt install php-pgsql
       ```

    2. Используйте пример подключения:

       ```php
       <?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-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных;
       * `<password>` — пароль пользователя;
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="go">
    <TabItemLabel>
      Go
    </TabItemLabel>

    Используйте пример подключения:

    ```go
    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>` — [порт для подключения](#connection-ports);
    * `<database_user_name>` — имя пользователя базы данных;
    * `<password>` — пароль пользователя;
    * `<host>` — DNS-адрес или [публичный IP-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
    * `<database_name>` — имя базы данных.
  </TabItem>

  <TabItem value="nodejs">
    <TabItemLabel>
      Node.js
    </TabItemLabel>

    1. Установите библиотеку pg:

       ```bash
       npm install pg
       ```

    2. Используйте пример подключения:

       ```js
       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-адрес](/managed-databases/timescaledb/public-ip.mdx) (Floating IP) ноды;
       * `<port>` — [порт для подключения](#connection-ports);
       * `<database_name>` — имя базы данных;
       * `<database_user_name>` — имя пользователя базы данных;
       * `<password>` — пароль пользователя.
  </TabItem>
</Tabs>

<Formbricks />
