Skillshub clickhouse-install-auth
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/clickhouse-install-auth" ~/.claude/skills/comeonoliver-skillshub-clickhouse-install-auth && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/clickhouse-install-auth/SKILL.mdsource content
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 |
|---|---|---|
| | Full URL including protocol and port |
| | ClickHouse user |
| | User password |
| | Default database for queries |
| | Query timeout in ms |
| | Compress request bodies (gzip) |
| | Decompress responses |
| | HTTP keep-alive pool size |
| | 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 |
|---|---|---|
| Server not running | Check host/port, verify ClickHouse is up |
| Wrong user/password | Verify credentials in ClickHouse users.xml or Cloud console |
| TLS mismatch | Use for Cloud, check CA certs for self-hosted |
| Network/firewall | Check IP allowlists in Cloud console, firewall rules |
| Wrong database name | Run to list available databases |
Resources
- Official Node.js Client
- Official Python Client
- ClickHouse Cloud Quick Start
- HTTP Interface Reference
Next Steps
Proceed to
clickhouse-hello-world for your first table and query.