您可以通过HTTPS协议访问云数据库ClickHouse。本文介绍如何通过HTTPS协议连接云数据库ClickHouse集群。
前提条件
注意事项
通过HTTPS协议连接云数据库ClickHouse集群会增加网络连接响应时间。
通过HTTPS协议连接云数据库ClickHouse集群会显著增加CPU使用率,建议您在使用外网且有加密需求时,使用HTTPS协议访问云数据库ClickHouse。使用VPC网络相对安全,一般无需使用HTTPS协议访问云数据库ClickHouse。
Java JDBC方式连接
使用Eclipse或其他IDE工具创建Maven项目并引入ClickHouse驱动依赖包。
<dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.1</version> </dependency>
编写应用程序代码。获取Clickhouse连接对象。
语法如下。
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(<超时时间,单位:毫秒>); ClickHouseDataSource dataSource = new ClickHouseDataSource("jdbc:clickhouse://<外网地址、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); ClickHouseDataSource dataSource = new ClickHouseDataSource("jdbc:clickhouse://cc-****.public.clickhouse.ads.aliyuncs.com:8443/test01?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