PostgreSQL 인터페이스
PostgreSQL 인터페이스 (PostgreSQL interface)
ClickHouse는 PostgreSQL 와이어 프로토콜을 지원해서 Postgres 클라이언트로 ClickHouse에 연결할 수 있어요. ClickHouse가 PostgreSQL 인스턴스인 것처럼 동작하게 해 주죠. 여기서 psql로 연결하고 SCRAM-SHA-256 인증을 설정하는 방법을 설명해 드릴게요.
출처: 문서
본문
팁: ClickHouse 관리형 Postgres 서비스를 확인해 보세요. 컴퓨팅과 물리적으로 같은 위치에 있는 NVMe 스토리지로 구동되며, EBS 같은 네트워크 연결 스토리지를 사용하는 대안보다 디스크 바운드 워크로드에서 최대 10배 더 빠른 성능을 제공하고, ClickPipes의 Postgres CDC 커넥터로 Postgres 데이터를 ClickHouse에 복제할 수 있게 해줘요.
ClickHouse는 PostgreSQL 와이어 프로토콜을 지원해서 Postgres 클라이언트로 ClickHouse에 연결할 수 있어요. 어떤 의미에서 ClickHouse는 PostgreSQL 인스턴스인 척할 수 있어요. ClickHouse가 직접 지원하지 않는 PostgreSQL 클라이언트 애플리케이션(예: Amazon Redshift)을 ClickHouse에 연결할 수 있게 해 주죠.
PostgreSQL 와이어 프로토콜을 활성화하려면 postgresql_port 설정을 서버 설정 파일에 추가해요. 예를 들어 config.d 폴더의 새 XML 파일에 포트를 정의할 수 있어요:
<clickhouse>
<postgresql_port>9005</postgresql_port>
</clickhouse>
ClickHouse 서버를 시작하고 Listening for PostgreSQL compatibility protocol을 언급하는 다음과 같은 로그 메시지를 찾아보세요:
{} <Information> Application: Listening for PostgreSQL compatibility protocol: 127.0.0.1:9005
psql을 ClickHouse에 연결하기
다음 명령은 PostgreSQL 클라이언트 psql을 ClickHouse에 연결하는 방법을 보여줘요:
psql -p [port] -h [hostname] -U [username] [database_name]
예를 들어:
psql -p 9005 -h 127.0.0.1 -U alice default
참고: psql 클라이언트는 비밀번호 로그인이 필요하므로, 비밀번호가 없는 기본 사용자로는 연결할 수 없어요. 기본 사용자에 비밀번호를 할당하거나 다른 사용자로 로그인하세요.
psql 클라이언트가 비밀번호를 물어봐요:
Password for user alice:
psql (14.2, server 22.3.1.1)
WARNING: psql major version 14, server major version 22.
Some psql features might not work.
Type "help" for help.
default=>
그게 다예요! 이제 ClickHouse에 연결된 PostgreSQL 클라이언트가 생겼고, 모든 명령과 쿼리가 ClickHouse에서 실행돼요.
참고: PostgreSQL 프로토콜은 현재 평문 비밀번호만 지원해요.
SSL 사용 (Using SSL)
ClickHouse 인스턴스에 SSL/TLS가 구성되어 있다면 postgresql_port는 같은 설정을 사용해요(포트는 보안 및 비보안 클라이언트 모두 공유돼요).
각 클라이언트는 SSL로 연결하는 고유한 방법이 있어요. 다음 명령은 psql을 ClickHouse에 안전하게 연결하기 위해 인증서와 키를 전달하는 방법을 보여줘요:
psql "port=9005 host=127.0.0.1 user=alice dbname=default sslcert=/path/to/certificate.pem sslkey=/path/to/key.pem sslrootcert=/path/to/rootcert.pem sslmode=verify-ca"
SCRAM-SHA-256으로 ClickHouse 사용자 인증 구성하기
ClickHouse에서 안전한 사용자 인증을 보장하려면 SCRAM-SHA-256 프로토콜을 사용하는 것이 권장돼요. users.xml 파일에 password_scram_sha256_hex 요소를 지정해 사용자를 구성해요. 비밀번호 해시는 num_iterations=4096으로 생성해야 해요.
psql 클라이언트가 연결 중에 SCRAM-SHA-256을 지원하고 협상하는지 확인하세요.
비밀번호 abacaba를 가진 사용자 user_with_sha256에 대한 예시 구성:
<user_with_sha256>
<password_scram_sha256_hex>04e7a70338d7af7bb6142fe7e19fef46d9b605f3e78b932a60e8200ef9154976</password_scram_sha256_hex>
</user_with_sha256>
SSL 설정에 대한 자세한 내용은 PostgreSQL 문서를 참고해요.