您可以通过HTTPS协议访问云数据库ClickHouse。本文介绍如何通过HTTPS协议连接云数据库ClickHouse集群。

使用限制

仅20.8及以上版本的云数据库ClickHouse集群支持通过HTTPS协议连接。

注意事项

  • 通过HTTPS协议连接云数据库ClickHouse集群会增加网络连接响应时间。
  • 通过HTTPS协议连接云数据库ClickHouse集群会显著增加CPU使用率,建议您在使用外网且有加密需求时,使用HTTPS协议访问云数据库ClickHouse。使用VPC网络相对安全,一般无需使用HTTPS协议访问云数据库ClickHouse

前提条件

  • 已开通HTTPS协议并下载SSL CA证书。如何开通和下载,请参见开通HTTPS协议
  • 已将连接源的IP地址添加到云数据库ClickHouse集群的白名单中。如何添加,请参见设置白名单
  • 如果连接源和云数据库ClickHouse集群不属于同一个VPC,请先为云数据库ClickHouse集群申请外网地址。

Java JDBC方式连接

语法如下。
public void run()
        throws InterruptedException {

    final ClickHouseProperties clickHouseProperties = new ClickHouseProperties();
    clickHouseProperties.setSslRootCertificate("<证书路径>");
    clickHouseProperties.setSsl(true);
    clickHouseProperties.setSslMode("<SSL Mode,取值:strict、none>");
    clickHouseProperties.setUser("<数据库账号>");
    clickHouseProperties.setPassword("<数据库账号的密码>");
    clickHouseProperties.setSocketTimeout(<超时时间,单位:毫秒>);
    final BalancedClickhouseDataSource dataSource = new BalancedClickhouseDataSource("jdbc:<外网地址、VPC地址或IP地址>:<HTTPS端口号>/<数据库名称>?ssl=true", clickHouseProperties);
    try {
        final ClickHouseConnection conn = dataSource.getConnection();
        conn.createStatement().executeQuery("select now()");
    } catch (Throwable e) {
        e.printStackTrace();
    }
}
说明 如果通过IP地址连接,连接源和云数据库ClickHouse集群需属于同一个VPC且SSL Mode取值为none
示例如下。
public void run()
        throws InterruptedException {

    final ClickHouseProperties clickHouseProperties = new ClickHouseProperties();
    clickHouseProperties.setSslRootCertificate("/user/ck-root-ClickHouse-CA-Chain.pem");
    clickHouseProperties.setSsl(true);
    clickHouseProperties.setSslMode("strict");
    clickHouseProperties.setUser("test");
    clickHouseProperties.setPassword("123456Aa");
    clickHouseProperties.setSocketTimeout(2 * 3600 * 1000);
    final BalancedClickhouseDataSource dataSource = new BalancedClickhouseDataSource("jdbc:cc-bp163l724nkf****.clickhouse.ads.aliyuncs.com:8443/default?ssl=true", clickHouseProperties);
    try {
        final ClickHouseConnection conn = dataSource.getConnection();
        conn.createStatement().executeQuery("select now()");
    } catch (Throwable e) {
        e.printStackTrace();
    }
}

curl命令行方式连接

语法如下。
curl --cacert <证书路径> https://<外网地址或VPC地址>:<HTTPS端口号>/ping
示例如下。
curl --cacert ./ck-root-ClickHouse-CA-Chain.pem https://cc-bp163l724nkf****.clickhouse.ads.aliyuncs.com:8443/ping