---
title: 'Подключиться к кластеру ClickHouse®'
sidebar_label: 'Подключиться к кластеру'
description: 'Как подключиться к кластеру ClickHouse®'
sidebar_position: 5
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from 'docs-kit/components'
import Formbricks from '@theme/MDXComponents/Formbricks'

# Подключиться к кластеру ClickHouse®

К кластеру ClickHouse® можно [подключиться](#connect-to-cluster):

* через консольные клиенты, например [clickhouse-client](https://clickhouse.com/docs/interfaces/client);
* программный код.

Для всех способов используется подключение с SSL.

При подключении укажите [порт](#connection-ports) и [адрес](#connection-addresses).

## Порты для подключения \{#connection-ports}

Для подключения к ClickHouse® используйте порты:

* 9440 — порт для подключения через [нативный интерфейс (TCP)](https://clickhouse.com/docs/interfaces/tcp);
* 8443 — порт для подключения через [HTTP-интерфейс](https://clickhouse.com/docs/interfaces/http).

## Адреса для подключения \{#connection-addresses}

Вы можете выбрать адрес для подключения в зависимости от одного из сценариев:

* [подключение к кластеру из приватной подсети](#connecting-to-cluster-from-private-subnet);
* [подключение к кластеру из интернета](#connecting-to-cluster-from-internet).

Вы можете [посмотреть адрес для подключения](#view-connection-address) в панели управления.

![](https://423.selcdn.ru/kb/dbaas-opensearch-connect-to-cluster-connecting-LANG-THEME.png)

### Подключение к кластеру из приватной подсети \{#connecting-to-cluster-from-private-subnet}

Если вы подключаетесь к кластеру из приватной подсети, используйте приватный IP-адрес.

Чтобы подключиться из другой приватной подсети, сначала [подключите обе приватные подсети к облачному роутеру](/cloud-servers/cloud-networks/cloud-routers.mdx#connect-private-subnet-to-cloud-router).

### Подключение к кластеру из интернета \{#connecting-to-cluster-from-internet}

Если вы подключаетесь к кластеру из интернета, используйте [публичный IP-адрес](/managed-databases/clickhouse/public-ip.mdx).
Приватная подсеть должна соответствовать [требованиям](/managed-databases/clickhouse/public-ip.mdx#requirements).
Если подсеть не соответствует требованиям, [подготовьте ее для подключения публичного IP-адреса](/managed-databases/clickhouse/public-ip.mdx#configure-subnet).

### Посмотреть адрес для подключения \{#view-connection-address}

1. В [панели управления](https://my.selectel.ru/vpc/default/dbaas/) в верхнем меню нажмите **Продукты** и выберите **Облачные базы данных**.
2. Откройте вкладку **Активные**.
3. Откройте страницу кластера баз данных → вкладка **Подключение**.
4. В блоке **Адреса для подключения** откройте вкладку группы нод, адреса которой хотите посмотреть.

## Подключиться к кластеру \{#connect-to-cluster}

<Tabs queryString="connect-to-data-and-manager">
  <TabItem value="clickhouse-client" default>
    <TabItemLabel>
      clickhouse-client
    </TabItemLabel>

    1. Создайте конфигурационный файл `config.xml`:

       ```bash
       if [ "$USER" = "root" ]; then
           CONFIG_DIR="/root/.clickhouse-client"
       else
           CONFIG_DIR="/home/${USER}/.clickhouse-client"
       fi

       mkdir -p ${CONFIG_DIR}

       cat > ${CONFIG_DIR}/config.xml << EOF
       <config>
           <openSSL>
               <client>
                   <caConfig>${CONFIG_DIR}/root.crt</caConfig>
                   <verificationMode>strict</verificationMode>
                   <invalidCertificateHandler>
                       <name>RejectCertificateHandler</name>
                   </invalidCertificateHandler>
               </client>
           </openSSL>
       </config>
       EOF
       ```

    2. Скачайте корневой сертификат и поместите его в папку `~/.clickhouse-client/`:

       ```bash
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.clickhouse-client/root.crt
       chmod 0600 ~/.clickhouse-client/root.crt
       ```

    3. Подключитесь к ноде:

       ```bash
       clickhouse-client --host <host> \
                         --secure \
                         --user admin \
                         --database <database_name> \
                         --port <port> \
                         --password <password>
       ```

       Укажите:

       * `<host>` — IP-адрес ноды;
       * `<database_name>` — имя базы данных.
         При первом подключении к кластеру укажите базу данных по умолчанию — `default`.
         После первого подключения вы можете [создать новые базы данных](/managed-databases/clickhouse/create-database.mdx);
       * `<port>` — [порт для подключения](#connection-ports);
       * `<password>` — пароль пользователя-администратора.
         Пароль задается при создании кластера.
         После создания пароль нельзя посмотреть в панели управления, но можно [изменить](/managed-databases/clickhouse/manage-users.mdx#change-administrators-password).
  </TabItem>

  <TabItem value="python">
    <TabItemLabel>
      Python
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.clickhouse/`:

       ```bash
       mkdir -p ~/.clickhouse/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.clickhouse/root.crt
       chmod 0600 ~/.clickhouse/root.crt
       ```

    2. Установите библиотеку `clickhouse-driver`:

       ```bash
       pip3 install clickhouse-driver
       ```

    3. Подключитесь к ноде:

       ```python
       from clickhouse_driver import Client

       client = Client(host='<host>',
                       user='admin',
                       password='<password>',
                       port=<port>,
                       secure=True,
                       verify=True,
                       ca_certs='/root/.clickhouse/root.crt')

       print(client.execute('SELECT version()'))
       ```

       Укажите:

       * `<host>` — IP-адрес ноды;
       * `<password>` — пароль пользователя-администратора.
         Пароль задается при создании кластера.
         После создания пароль нельзя посмотреть в панели управления, но можно [изменить](/managed-databases/clickhouse/manage-users.mdx#change-administrators-password);
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="go">
    <TabItemLabel>
      Go
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.clickhouse/`:

       ```bash
       mkdir -p ~/.clickhouse/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.clickhouse/root.crt
       chmod 0600 ~/.clickhouse/root.crt
       ```

    2. Подключитесь к ноде:

       ```go
       package main

       import (
           "fmt"
           "net/http"
           "io/ioutil"
           "crypto/x509"
           "crypto/tls"
       )

       func main() {

           const DB_HOST = "<host>"
           const DB_NAME = "<database_name>"
           const DB_USER = "admin"
           const DB_PASS = "<password>"

           const CACERT = "/root/.clickhouse/root.crt";

           caCert, err := ioutil.ReadFile(CACERT)
           if err != nil {
               panic(err)
           }
           caCertPool := x509.NewCertPool()
           caCertPool.AppendCertsFromPEM(caCert)
           conn := &http.Client{
               Transport: &http.Transport{
               TLSClientConfig: &tls.Config{
                   RootCAs: caCertPool,
               },
           },
           }

           req, _ := http.NewRequest("GET", fmt.Sprintf("https://%s:<port>/", DB_HOST), nil)
           query := req.URL.Query()
           query.Add("database", DB_NAME)
           query.Add("query", "SELECT version()")

           req.URL.RawQuery = query.Encode()

           req.Header.Add("X-ClickHouse-User", DB_USER)
           req.Header.Add("X-ClickHouse-Key", DB_PASS)

           resp, err := conn.Do(req)
           if err != nil {
               panic(err)
           }

           defer resp.Body.Close()

           data, _ := ioutil.ReadAll(resp.Body)
           fmt.Println(string(data))
       }
       ```

       Укажите:

       * `<host>` — IP-адрес ноды;
       * `<database_name>` — имя базы данных.
         При первом подключении к кластеру укажите базу данных по умолчанию — `default`.
         После первого подключения вы можете [создать новые базы данных](/managed-databases/clickhouse/create-database.mdx);
       * `<password>` — пароль пользователя-администратора.
         Пароль задается при создании кластера.
         После создания пароль нельзя посмотреть в панели управления, но можно [изменить](/managed-databases/clickhouse/manage-users.mdx#change-administrators-password);
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="nodejs">
    <TabItemLabel>
      Node.js
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.clickhouse/`:

       ```bash
       mkdir -p ~/.clickhouse/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.clickhouse/root.crt
       chmod 0600 ~/.clickhouse/root.crt
       ```

    2. Установите зависимости:

       ```bash
       npm install querystring
       ```

    3. Подключитесь к ноде:

       ```js
       "use strict"
       const https = require('https');
       const querystring = require('querystring');
       const fs = require('fs');

       const DB_HOST = "<host>";
       const DB_NAME = "<database_name>";
       const DB_USER = "admin";
       const DB_PASS = "<password>";

       const CACERT = "/root/.clickhouse/root.crt";

       const options = {
           'method': 'GET',
           'ca': fs.readFileSync(CACERT),
           'path': '/?' + querystring.stringify({
               'database': DB_NAME,
               'query': 'SELECT version()',
           }),
           'port': <port>,
           'hostname': DB_HOST,
           'headers': {
               'X-ClickHouse-User': DB_USER,
               'X-ClickHouse-Key': DB_PASS,
           },
       };

       const rs = https.request(options, (res) => {
           res.setEncoding('utf8');
           res.on('data', (chunk) => {
               console.log(chunk);
           });
       });

       rs.end();
       ```

       Укажите:

       * `<host>` — IP-адрес ноды;
       * `<database_name>` — имя базы данных.
         При первом подключении к кластеру укажите базу данных по умолчанию — `default`.
         После первого подключения вы можете [создать новые базы данных](/managed-databases/clickhouse/create-database.mdx);
       * `<password>` — пароль пользователя-администратора.
         Пароль задается при создании кластера.
         После создания пароль нельзя посмотреть в панели управления, но можно [изменить](/managed-databases/clickhouse/manage-users.mdx#change-administrators-password);
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>

  <TabItem value="java">
    <TabItemLabel>
      Java
    </TabItemLabel>

    1. Скачайте корневой сертификат и поместите его в папку `~/.clickhouse/`:

       ```bash
       mkdir -p ~/.clickhouse/
       wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.clickhouse/root.crt
       chmod 0600 ~/.clickhouse/root.crt
       ```

    2. Установите зависимости:

       ```bash
       sudo apt update && sudo apt install --yes default-jdk maven
       ```

    3. Создайте конфигурационный файл для Maven:

       <details>
         <summary>pom.xml</summary>

         ```java
         <?xml version="1.0" encoding="UTF-8"?>
         <project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

             <modelVersion>4.0.0</modelVersion>

             <groupId>com.example</groupId>
             <artifactId>app</artifactId>
             <version>0.1.0</version>
             <packaging>jar</packaging>

             <properties>
                 <maven.compiler.source>1.8</maven.compiler.source>
                 <maven.compiler.target>1.8</maven.compiler.target>
                 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
             </properties>

             <dependencies>
                 <dependency>
                     <groupId>com.clickhouse</groupId>
                     <artifactId>clickhouse-jdbc</artifactId>
                     <version>0.9.8</version>
                 </dependency>

                 <dependency>
                     <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-simple</artifactId>
                     <version>1.7.36</version>
                 </dependency>
             </dependencies>

             <build>
                 <sourceDirectory>src</sourceDirectory>
                 <finalName>${project.artifactId}-${project.version}</finalName>

                 <plugins>
                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-compiler-plugin</artifactId>
                         <version>3.11.0</version>
                         <configuration>
                             <source>1.8</source>
                             <target>1.8</target>
                         </configuration>
                     </plugin>

                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-assembly-plugin</artifactId>
                         <version>3.7.1</version>

                         <configuration>
                             <descriptorRefs>
                                 <descriptorRef>jar-with-dependencies</descriptorRef>
                             </descriptorRefs>

                             <archive>
                                 <manifest>
                                     <mainClass>com.example.App</mainClass>
                                 </manifest>
                             </archive>
                         </configuration>

                         <executions>
                             <execution>
                                 <id>make-assembly</id>
                                 <phase>package</phase>
                                 <goals>
                                     <goal>single</goal>
                                 </goals>
                             </execution>
                         </executions>
                     </plugin>
                 </plugins>
             </build>

         </project>
         ```
       </details>

    4. Подключитесь к ноде:

       ```bash
       package com.example;

       import java.sql.Connection;
       import java.sql.DriverManager;
       import java.sql.ResultSet;

       public class App {
           public static void main(String[] args) {
               String DB_HOST = "<host>";
               String DB_NAME = "<database_name>";
               String DB_USER = "admin";
               String DB_PASS = "<password>";

               String CACERT = "/root/.clickhouse/root.crt";

               String DB_URL = String.format(
                   "jdbc:clickhouse://%s:<port>/%s?ssl=true&sslrootcert=%s",
                   DB_HOST,
                   DB_NAME,
                   CACERT
               );

               try {
                   Class.forName("com.clickhouse.jdbc.ClickHouseDriver");

                   Connection conn = DriverManager.getConnection(
                       DB_URL,
                       DB_USER,
                       DB_PASS
                   );

                   ResultSet rs = conn.createStatement().executeQuery(
                       "SELECT version()"
                   );

                   if (rs.next()) {
                       System.out.println("ClickHouse version: " + rs.getString(1));
                   }

                   rs.close();
                   conn.close();
               } catch (Exception ex) {
                   ex.printStackTrace();
               }
           }
       }
       ```

       Укажите:

       * `<host>` — IP-адрес ноды;
       * `<database_name>` — имя базы данных.
         При первом подключении к кластеру укажите базу данных по умолчанию — `default`.
         После первого подключения вы можете [создать новые базы данных](/managed-databases/clickhouse/create-database.mdx);
       * `<password>` — пароль пользователя-администратора.
         Пароль задается при создании кластера.
         После создания пароль нельзя посмотреть в панели управления, но можно [изменить](/managed-databases/clickhouse/manage-users.mdx#change-administrators-password);
       * `<port>` — [порт для подключения](#connection-ports).
  </TabItem>
</Tabs>

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc. https://clickhouse.com.

<Formbricks />
