跳到主要内容
跳到主要内容

PostgreSQL 接口

ClickHouse 支持 PostgreSQL 线协议,这允许您使用 Postgres 客户端连接到 ClickHouse。从某种意义上说,ClickHouse 可以假装成为 PostgreSQL 实例 - 允许您连接一个 ClickHouse 尚未直接支持的 PostgreSQL 客户端应用程序(例如,Amazon Redshift)。

要启用 PostgreSQL 线协议,请将 postgresql_port 设置添加到您的服务器配置文件中。例如,您可以在 config.d 文件夹中定义一个新的 XML 文件来指定端口:

启动您的 ClickHouse 服务器,并查找类似于以下信息的日志消息,提到 正在侦听 PostgreSQL 兼容协议

将 psql 连接到 ClickHouse

以下命令演示如何将 PostgreSQL 客户端 psql 连接到 ClickHouse:

例如:

备注

psql 客户端需要使用密码登录,因此您将无法使用没有密码的 default 用户进行连接。请为 default 用户分配一个密码,或使用其他用户登录。

psql 客户端会提示输入密码:

就这样!您现在有一个连接到 ClickHouse 的 PostgreSQL 客户端,所有命令和查询都在 ClickHouse 上执行。

备注

PostgreSQL 协议目前仅支持明文密码。

使用 SSL

如果您在 ClickHouse 实例上配置了 SSL/TLS,那么 postgresql_port 将使用相同的设置(该端口对安全和不安全的客户端是共享的)。

每个客户端都有自己使用 SSL 进行连接的方法。以下命令演示如何传入证书和密钥,以安全地将 psql 连接到 ClickHouse:

使用 SCRAM-SHA-256 配置 ClickHouse 用户身份验证

为了确保 ClickHouse 中的用户身份验证安全,建议使用 SCRAM-SHA-256 协议。通过在 users.xml 文件中指定 password_scram_sha256_hex 元素来配置用户。密码哈希必须使用 num_iterations=4096 生成。

确保 psql 客户端支持并在连接时协商 SCRAM-SHA-256。

用户 user_with_sha256 的示例配置,密码为 abacaba

查看 PostgreSQL 文档 以获取更多有关其 SSL 设置的详细信息。