Skills Data Science Configure ClickHouse Client and Authentication

Configure ClickHouse Client and Authentication

v20260423
clickhouse-install-auth
This guide provides comprehensive steps for setting up and authenticating the official ClickHouse client for both Node.js and Python. It covers connecting to ClickHouse Cloud or a self-hosted instance, managing environment variables, and verifying the connection using sample code snippets. Ideal for new ClickHouse projects or integrating data analytics pipelines into existing applications.
Get Skill
231 downloads
Overview

ClickHouse Install & Auth

Overview

Set up the official ClickHouse client for Node.js or Python and configure authentication to ClickHouse Cloud or a self-hosted instance.

Prerequisites

  • Node.js 18+ or Python 3.8+
  • A running ClickHouse instance (Cloud or self-hosted)
  • Connection credentials (host, port, user, password)

Instructions

Step 1: Install the Official Client

# Node.js — official client (HTTP-based, supports streaming)
npm install @clickhouse/client

# Python — official client
pip install clickhouse-connect

Step 2: Configure Environment Variables

# .env (NEVER commit — add to .gitignore)
CLICKHOUSE_HOST=https://abc123.us-east-1.aws.clickhouse.cloud:8443
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=your-password-here

# Self-hosted (HTTP interface on port 8123, native on 9000)
# CLICKHOUSE_HOST=http://localhost:8123

Step 3: Create the Client (Node.js)

import { createClient } from '@clickhouse/client';

// ClickHouse Cloud
const client = createClient({
  url: process.env.CLICKHOUSE_HOST,           // https://<host>:8443
  username: process.env.CLICKHOUSE_USER,       // default
  password: process.env.CLICKHOUSE_PASSWORD,
  // ClickHouse Cloud requires TLS — the client handles it via https:// URL
});

// Self-hosted (no TLS)
const localClient = createClient({
  url: 'http://localhost:8123',
  username: 'default',
  password: '',
});

Step 4: Verify Connection

async function verifyConnection() {
  // Ping returns true if the server is reachable
  const alive = await client.ping();
  console.log('ClickHouse ping:', alive.success);  // true

  // Run a test query
  const rs = await client.query({
    query: 'SELECT version() AS ver, uptime() AS uptime_sec',
    format: 'JSONEachRow',
  });
  const rows = await rs.json<{ ver: string; uptime_sec: number }>();
  console.log('Server version:', rows[0].ver);
  console.log('Uptime (sec):', rows[0].uptime_sec);
}

verifyConnection().catch(console.error);

Step 5: Python Alternative

import clickhouse_connect

client = clickhouse_connect.get_client(
    host='abc123.us-east-1.aws.clickhouse.cloud',
    port=8443,
    username='default',
    password='your-password-here',
    secure=True,
)

result = client.query('SELECT version(), uptime()')
print(f"Version: {result.result_rows[0][0]}")

Connection Options Reference

Option Default Description
url http://localhost:8123 Full URL including protocol and port
username default ClickHouse user
password '' User password
database default Default database for queries
request_timeout 30000 Query timeout in ms
compression.request false Compress request bodies (gzip)
compression.response true Decompress responses
max_open_connections 10 HTTP keep-alive pool size
clickhouse_settings {} Server-side settings per session

ClickHouse Cloud vs Self-Hosted

Feature Cloud Self-Hosted
Port 8443 (HTTPS) 8123 (HTTP) / 8443 (HTTPS)
TLS Required Optional
Engine SharedMergeTree MergeTree family
Auth User/password, Cloud API keys User/password, LDAP, Kerberos

Error Handling

Error Cause Solution
ECONNREFUSED Server not running Check host/port, verify ClickHouse is up
Authentication failed Wrong user/password Verify credentials in ClickHouse users.xml or Cloud console
CERTIFICATE_VERIFY_FAILED TLS mismatch Use https:// for Cloud, check CA certs for self-hosted
TIMEOUT Network/firewall Check IP allowlists in Cloud console, firewall rules
Database not found Wrong database name Run SHOW DATABASES to list available databases

Resources

Next Steps

Proceed to clickhouse-hello-world for your first table and query.

Info
Category Data Science
Name clickhouse-install-auth
Version v20260423
Size 4.84KB
Updated At 2026-04-27
Language