clickhousectl은 로컬과 클라우드용 ClickHouse CLI입니다.
clickhousectl로 다음 작업을 수행할 수 있습니다:
- 로컬 ClickHouse 버전 설치 및 관리
- 로컬 ClickHouse 서버 실행 및 관리
- 로컬 Postgres 인스턴스 실행 및 관리
- ClickHouse 서버에서 쿼리 실행
- ClickHouse Cloud를 설정하고 클라우드 관리형 ClickHouse 클러스터 생성
- ClickHouse Cloud Postgres 서비스 생성 및 관리
- ClickHouse Cloud 리소스 관리
- 데이터 수집을 위한 ClickPipes 생성 및 관리 (S3, Kafka, Kinesis, Postgres, MySQL, MongoDB, BigQuery)
- 지원되는 코딩 에이전트에 공식 ClickHouse agent 스킬 설치
- 로컬 ClickHouse 개발 환경을 클라우드로 푸시
clickhousectl은 사람과 AI 에이전트가 ClickHouse로 개발할 수 있도록 지원합니다.
설치
빠른 설치
~/.local/bin/clickhousectl에 설치합니다. 편의를 위해 chctl alias도 자동으로 생성됩니다.
요구 사항
- macOS (aarch64, x86_64) 또는 Linux (aarch64, x86_64)
- Cloud 명령에는 ClickHouse Cloud API Key가 필요합니다
로컬
ClickHouse 버전 설치 및 관리
clickhousectl은 builds.clickhouse.com에서 ClickHouse 바이너리를 다운로드하며, 해당 위치에서 빌드를 사용할 수 없으면 packages.clickhouse.com(Linux) 또는 GitHub releases(macOS)에서 대신 다운로드합니다.
local use는 선택한 버전의 binary를 가리키는 ~/.local/bin/clickhouse 심볼릭 링크도 생성하므로, 일반 clickhouse 명령(예: clickhouse local, clickhouse client)을 PATH에서 사용할 수 있습니다. 이 동작을 건너뛰려면 --no-global을 전달하세요. 해당 경로에 일반 파일이 이미 있으면 경고를 표시하고 그대로 둡니다. 활성 기본 버전에 local remove를 실행하면 심볼릭 링크도 제거됩니다.
ClickHouse 실행 파일 저장소
~/.clickhouse/에 저장됩니다:
프로젝트 초기화
init은 현재 작업 디렉터리에 ClickHouse 및 Postgres 프로젝트 파일을 위한 표준 폴더 구조를 설정합니다. 이 작업은 선택 사항이므로, 필요하면 자체 폴더 구조를 사용해도 됩니다.
다음과 같은 구조가 생성됩니다:
쿼리 실행
ClickHouse 서버 생성 및 관리
.clickhouse/servers/<name>/data/ 아래에 서로 격리된 자체 데이터 디렉터리가 할당됩니다.
--name을 지정하지 않으면 첫 번째 server의 이름은 “default”입니다. “default”가 이미 실행 중이면 임의의 이름이 생성됩니다(예: “bold-crane”). 반복해서 시작하거나 중지할 수 있는 안정적인 식별자가 필요하면 --name을 사용하세요.
포트: 기본 포트는 HTTP 8123과 TCP 9000입니다. 이 포트들이 이미 사용 중이면 사용 가능한 포트가 자동으로 할당되고 출력에 표시됩니다. 포트를 명시적으로 지정하려면 --http-port와 --tcp-port를 사용하세요.
전역 서버 관리: 시스템 전체의 모든 프로젝트에 걸쳐 작업하려면 list, stop, stop-all과 함께 --global을 사용하세요. server list --global은 실행 중인 모든 ClickHouse 서버를 표시하며, 각 서버가 어느 디렉터리에 속하는지 나타내는 Project 컬럼이 함께 표시됩니다.
로컬 서버용 사용자 지정 구성 파일
~/.clickhouse/configs/에 넣고 서버를 시작할 때 이름으로 적용하세요:
config.d를 통해). 따라서 변경하려는 설정만 포함하면 되며, 전체 구성을 다시 작성할 필요는 없습니다. 파일은 .xml, .yaml 또는 .yml 형식일 수 있으며, 확장자를 포함하거나 제외한 파일 이름으로 참조할 수 있습니다.
프로젝트 로컬 데이터 디렉터리
.clickhouse/에 저장됩니다:
clickhousectl local server remove <name>를 사용하십시오.
로컬 Postgres 실행
clickhousectl로 로컬 Postgres 인스턴스도 실행하고 관리할 수 있습니다. 로컬 Postgres는 Docker를 기반으로 하므로 Docker가 설치되어 있고 실행 중이어야 합니다. 각 인스턴스는 이름과 주 버전으로 식별되므로 여러 Postgres 버전을 각각 별도의 데이터 디렉터리로 나란히 실행할 수 있습니다.
인증
clickhousectl cloud auth signup를 실행하면 브라우저에서 가입 페이지가 열립니다.
API Key/Secret (권장)
.clickhouse/credentials.json(프로젝트 로컬)에 저장됩니다.
세션에서 export한 환경 변수도 사용할 수 있습니다:
.env 파일에 넣을 수 있습니다:
OAuth 로그인
.clickhouse/tokens.json에 저장됩니다(프로젝트 로컬).
OAuth 액세스는 현재 읽기 전용이며 속한 모든 조직에 대한 액세스를 제공합니다. 쓰기 액세스가 필요하거나 CLI의 범위를 단일 조직으로 제한하려면 대신 범위가 지정된 API Key를 생성하세요.
인증 상태 및 로그아웃
.clickhouse/credentials.json > export로 설정된 환경 변수 > .env 파일 > OAuth 토큰.
사용된 자격 증명 소스 디버깅
cloud 명령에 --debug를 전달하세요.
Cloud
조직
서비스
서비스 생성 옵션
Query API 인증 모드
cloud service query는 clickhouse 바이너리나 서비스 비밀번호 없이 HTTP를 통해 cloud service에 SQL을 실행하는 기본 방식입니다. 이 명령은 두 가지 자격 증명 모드를 모두 지원합니다.
- API Key 인증 (읽기 + 쓰기 SQL): 저장된 키가 없는 서비스에 대해
cloud service query를 처음 실행하면, 해당 서비스용 Query API 엔드포인트를 Provisioning하고 여기에 연결된 전용 API Key를 생성합니다. 이 키(keyId,keySecret,endpointId)는.clickhouse/credentials.json의service_query_keys.<service-id>아래에 저장됩니다. 이 키는 단일 서비스 범위로 제한되므로 해당 서비스에서는 읽기와 쓰기(SELECT, INSERT, DDL)가 가능하지만, 조직 내 다른 서비스에는 접근할 수 없습니다. Provisioning하지 않고 실패하게 하려면--no-auto-enable을 지정하십시오. - OAuth (
cloud auth login): 쿼리는 웹 SQL 콘솔과 마찬가지로 사용자 본인의 아이덴티티로 실행됩니다. OAuth를 사용할 때 서비스에 대한 SQL 권한은 읽기 전용입니다. Query API Key는 Provisioning되거나 저장되지 않습니다. 이 모드에서는--no-auto-enable이 적용되지 않습니다.
cloud service start를 실행하라는 안내와 함께 실패합니다. 파생된 Query API host를 재정의하려면 CLICKHOUSE_CLOUD_QUERY_HOST를 설정하십시오.
쿼리 엔드포인트 관리
Private Endpoint 관리
Backup 구성
Postgres 서비스
clickhousectl로도 위의 ClickHouse 서비스 명령과 동일하게 ClickHouse Cloud Postgres 서비스를 생성하고 관리할 수 있습니다.
Postgres 서비스 생성 옵션
백업
ClickPipes
ClickPipes 생성
clickpipe create에는 소스 유형별로 고유한 하위 명령이 있습니다:
clickhousectl cloud clickpipe create <source> --help 명령으로 확인하십시오.
구성원
초대
키
활동
JSON 출력
--json 플래그를 사용하세요.
clickhousectl은 코딩 에이전트 Context(Claude Code, Cursor, Codex, Gemini CLI, Goose, Devin, 및 표준 AGENT env var를 설정하는 모든 도구)를 자동으로 감지하고, --json을 설정하지 않아도 JSON을 stdout으로 자동 출력합니다.
종료 코드
gh CLI 관례를 따릅니다:
Skills
비대화형 플래그
자체 업데이트
clickhousectl 자체를 최신 릴리스로 업데이트할 수 있습니다:
텔레메트리
clickhousectl은 CLI 사용 방식을 파악하기 위해 익명의 사용 텔레메트리를 수집합니다. 기본적으로 활성화되어 있지만, 사용자에게 안내하기 전에는 어떠한 정보도 전송하지 않습니다. 처음 실행하면 CLI가 수집하는 항목과 비활성화 방법을 설명하는 안내를 표시하며, 이때는 아무것도 전송하지 않습니다. 수집은 이후 실행부터 시작되므로, 정보가 수집되기 전에 언제든지 거부할 수 있습니다.
각 이벤트에는 다음 항목만 포함됩니다.
- 실행한 명령(예:
local start)과 사용한 플래그 이름 — 플래그 값, 위치 인수 또는 사용자가 제공한 기타 입력은 절대 포함되지 않으므로 쿼리, 테이블 이름, 자격 증명, 파일 경로는 수집되지 않습니다. - 종료 코드(예:
0,1,2,4)와 결과(예:ok,error,cancelled) - 잘못 입력한 명령에 대해 CLI가 표시한 “혹시 다음을 찾으셨나요?” 제안 — 실제 명령 또는 플래그 이름과 정확히 일치할 때만 기록되므로 입력한 내용이 포함될 수 없습니다.
clickhousectl버전, OS, 아키텍처, 그리고 CLI가 AI Agent에 의해 호출되었는지(어떤 agent인지 포함) 또는 CI에서 호출되었는지 여부
clickhousectl telemetry disable을 실행합니다(enable로 다시 활성화하고status로 확인).DO_NOT_TRACK=1환경 변수를 설정합니다.
CHCTL_TELEMETRY_DEBUG=1을 설정하세요.