Перейти к основному содержимому
Перейти к основному содержимому

Интерфейс PostgreSQL

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

Чтобы включить протокол связи PostgreSQL, добавьте параметр postgresql_port в файл конфигурации вашего сервера. Например, вы можете определить порт в новом XML файле в вашей папке config.d:

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

Подключение psql к ClickHouse

Следующая команда демонстрирует, как подключить клиент PostgreSQL psql к ClickHouse:

Например:

примечание

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

Клиент psql запрашивает пароль:

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

примечание

Протокол PostgreSQL в настоящее время поддерживает только пароли в открытом тексте.

Использование SSL

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

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

Настройка аутентификации пользователя ClickHouse с использованием SCRAM-SHA-256

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

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

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

Посмотрите документацию PostgreSQL для получения дополнительной информации о их настройках SSL.