跳至主要内容

PostgreSQL 接口

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

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

<clickhouse>
<postgresql_port>9005</postgresql_port>
</clickhouse>

启动 ClickHouse 服务器并查找类似以下内容的日志消息,其中提到了 **正在侦听 PostgreSQL 兼容性协议**

{} <Information> Application: Listening for PostgreSQL compatibility protocol: 127.0.0.1:9005

将 psql 连接到 ClickHouse

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

psql -p [port] -h [hostname] -U [username] [database_name]

例如

psql -p 9005 -h 127.0.0.1 -U alice default
注意

psql 客户端需要使用密码登录,因此您将无法使用无密码的 default 用户进行连接。要么为 default 用户分配密码,要么以其他用户身份登录。

psql 客户端会提示输入密码

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 上执行。

注意

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

使用 SSL

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

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

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"

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