> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по интерфейсу wire protocol PostgreSQL в ClickHouse

# Интерфейс PostgreSQL

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

<Tip>
  Ознакомьтесь с нашим сервисом [Managed Postgres](/ru/products/managed-postgres/overview). Благодаря NVMe-хранилищу, физически расположенному рядом с вычислительными ресурсами, он обеспечивает до 10 раз более высокую производительность для рабочих нагрузок, ограниченных дисковой подсистемой, по сравнению с альтернативами, использующими сетевые хранилища, такие как EBS, и позволяет реплицировать данные Postgres в ClickHouse с помощью коннектора Postgres CDC в ClickPipes.
</Tip>

ClickHouse поддерживает wire protocol PostgreSQL, что позволяет использовать клиенты Postgres для подключения к ClickHouse. В определённом смысле ClickHouse может выступать как экземпляр PostgreSQL, позволяя подключать к нему клиентские приложения PostgreSQL, которые ClickHouse пока не поддерживает напрямую (например, Amazon Redshift).

Чтобы включить wire protocol PostgreSQL, добавьте параметр [postgresql\_port](/ru/reference/settings/server-settings/settings#postgresql_port) в конфигурационный файл сервера. Например, можно указать порт в новом XML-файле в папке `config.d`:

```xml theme={null}
<clickhouse>
    <postgresql_port>9005</postgresql_port>
</clickhouse>
```

Запустите сервер ClickHouse и найдите в журнале сообщение, похожее на следующее, в котором упоминается **Listening for PostgreSQL compatibility protocol**:

```response theme={null}
{} <Information> Application: Listening for PostgreSQL compatibility protocol: 127.0.0.1:9005
```

<div id="connect-psql-to-clickhouse">
  ## Подключение `psql` к ClickHouse
</div>

Следующая команда показывает, как подключить PostgreSQL client `psql` к ClickHouse:

```bash theme={null}
psql -p [port] -h [hostname] -U [username] [database_name]
```

Например:

```bash theme={null}
psql -p 9005 -h 127.0.0.1 -U alice default
```

<Note>
  Для клиента `psql` требуется вход по паролю, поэтому вы не сможете подключиться под пользователем `default` без пароля. Либо задайте пароль для пользователя `default`, либо войдите под другим пользователем.
</Note>

Клиент `psql` запросит пароль:

```response theme={null}
Password for user alice:
psql (14.2, server 22.3.1.1)
WARNING: psql major version 14, server major version 22.
         Some psql features might not work.
Type "help" for help.

default=>
```

Вот и всё! Теперь у вас есть клиент PostgreSQL, подключённый к ClickHouse, и все команды и запросы выполняются в ClickHouse.

<Note>
  В настоящее время протокол PostgreSQL поддерживает только пароли в открытом виде.
</Note>

<div id="using-ssl">
  ## Использование SSL
</div>

Если на вашем экземпляре ClickHouse настроен SSL/TLS, то `postgresql_port` будет использовать те же параметры (этот порт общий для защищённых и незащищённых клиентов).

У каждого клиента свой способ подключения по SSL. Следующая команда показывает, как передать сертификаты и ключ, чтобы безопасно подключить `psql` к ClickHouse:

```bash theme={null}
psql "port=9005 host=127.0.0.1 user=alice dbname=default sslcert=/path/to/certificate.pem sslkey=/path/to/key.pem sslrootcert=/path/to/rootcert.pem sslmode=verify-ca"
```

<div id="using-scram-sha256">
  ## Настройка аутентификации пользователей ClickHouse с помощью SCRAM-SHA-256
</div>

Для безопасной аутентификации пользователей в ClickHouse рекомендуется использовать протокол SCRAM-SHA-256. Настройте пользователя, указав элемент `password_scram_sha256_hex` в файле users.xml. Хеш пароля должен быть сгенерирован с num\_iterations=4096.

Убедитесь, что клиент psql поддерживает SCRAM-SHA-256 и согласовывает его при установлении соединения.

Пример конфигурации для пользователя `user_with_sha256` с паролем `abacaba`:

```xml theme={null}
<user_with_sha256>
    <password_scram_sha256_hex>04e7a70338d7af7bb6142fe7e19fef46d9b605f3e78b932a60e8200ef9154976</password_scram_sha256_hex>
</user_with_sha256>
```

Подробнее о настройках SSL см. в [документации PostgreSQL](https://jdbc.postgresql.org/documentation/head/ssl-client.html).
