Интерфейс PostgreSQL
ClickHouse поддерживает сетевой протокол PostgreSQL (PostgreSQL wire protocol), что позволяет использовать клиентские приложения PostgreSQL для подключения к ClickHouse. В определённом смысле ClickHouse может притворяться экземпляром PostgreSQL, позволяя подключать к ClickHouse клиентские приложения PostgreSQL, которые ещё не поддерживаются ClickHouse напрямую (например, Amazon Redshift).
Чтобы включить сетевой протокол PostgreSQL, добавьте настройку postgresql_port в конфигурационный файл сервера. Например, вы можете задать порт в новом XML-файле в папке config.d:
Запустите сервер ClickHouse и найдите в журнале сообщение, аналогичное следующему, в котором упоминается Listening for PostgreSQL compatibility protocol:
Подключение psql к ClickHouse
Следующая команда демонстрирует, как подключиться к ClickHouse с помощью клиента PostgreSQL psql:
Например:
Клиент psql требует аутентификации с паролем, поэтому вы не сможете подключиться, используя пользователя default без пароля. Либо задайте пароль пользователю default, либо войдите под другим пользователем.
Клиент psql запрашивает ввод пароля:
И готово! Теперь у вас есть клиент PostgreSQL, подключённый к ClickHouse, и все команды и запросы выполняются на стороне ClickHouse.
В настоящее время протокол PostgreSQL поддерживает только пароли в открытом виде (plain-text).
Использование SSL
Если в вашем инстансе ClickHouse настроен SSL/TLS, то 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.