Docker로 ClickHouse 실행 및 MySQL 클라이언트를 사용하여 연결
7835 단어 dockertutorialclickhousemysql
We did not find detailed instruction on running ClickHouse with Docker on the web, so we decide to provide our own step-by-step tutorial.
배경
ClickHouse®는 SQL을 사용한 실시간 분석을 위한 오픈 소스, 고성능 열 형식 OLAP 데이터베이스 관리 시스템입니다.
Docker는 개발자가 애플리케이션을 신속하게 빌드, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 기본 운영 체제를 추상화하는 표준화된 단위인 컨테이너에 소프트웨어를 패키징합니다.
설치
계속하기 전에 docker를 설치하십시오.
섬기는 사람
다음 명령을 실행하여 도커 컨테이너에서 ClickHouse 서버를 시작합니다.
docker run -d --name tutorial-clickhouse-server --ulimit nofile=262144:262144 --volume=$HOME/tutorial_clickhouse_database:/var/lib/clickhouse yandex/clickhouse-server
고객
다음 명령을 실행하여 기본 사용자로 ClickHouse 서버에 연결합니다.
docker run -it --rm --link tutorial-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
구성
기본 사용자에 대한 SQL 기반 액세스 제어 및 계정 관리 활성화
기본적으로 ClickHouse 서버는 SQL 기반 액세스 제어 및 계정 관리를 사용할 수 없지만 모든 권한이 있는 기본 사용자 계정을 제공합니다. 활성화하려면 서버 구성 파일을 편집해야 합니다.
운영
docker cp <container>:/etc/clickhouse-server/users.xml .
로컬 컴퓨터의 현재 디렉터리(마지막 점을 놓치지 마세요)에 복사합니다. 그런 다음 로컬에서 파일을 편집하려는 편집기를 사용하십시오.
users.xml에서
<access_management>1</access_management>
를 추가합니다.변경 후 파일 구조는 다음과 같아야 합니다.
<users>
<default>
<access_management>1</access_management>
</default>
</users>
이는 안전하지 않으며 작업을 마친 후 다시
<access_management>0</access_management>
로 변경해야 합니다.그런 다음 실행
docker cp users.xml <container>:/etc/clickhouse-server/users.xml
오래된 것을 교체합니다.
사용자 만들기
CREATE USER user1 IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'pass1';
SHOW USERS
명령으로 사용자를 확인할 수 있습니다.데이터베이스 만들기
CREATE DATABASE IF NOT EXISTS db1
SHOW DATABASES
명령으로 데이터베이스를 확인할 수 있습니다.사용자에게 데이터베이스 권한 부여
GRANT ALL PRIVILEGES ON db1.* TO user1
새 사용자와 연결
이제 생성된 사용자로 서버에 접속할 수 있습니다.
docker run -it --rm --link tutorial-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server -u user1 --password pass1
SHOW GRANTS
를 실행하여 사용자가 가진 권한을 확인할 수 있습니다.테이블 생성 및 일부 쿼리 실행
테이블을 만들려면.
USE db1;
DROP TABLE IF EXISTS employees;
CREATE TABLE employees(
id integer,
name text,
designation text,
manager integer,
hired_on date,
salary integer,
commission float,
dept integer
)
ENGINE = MergeTree()
PRIMARY KEY id
ORDER BY id;
SHOW TABLES
를 실행하여 테이블을 확인하십시오.실행
DESCRIBE TABLE employees
. 당신은 같은 것을 볼 수 있습니다┌─name────────┬─type────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ id │ Int32 │ │ │ │ │ │
│ name │ String │ │ │ │ │ │
│ designation │ String │ │ │ │ │ │
│ manager │ Int32 │ │ │ │ │ │
│ hired_on │ Date │ │ │ │ │ │
│ salary │ Int32 │ │ │ │ │ │
│ commission │ Float32 │ │ │ │ │ │
│ dept │ Int32 │ │ │ │ │ │
└─────────────┴─────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘
일부 삽입을 수행합니다.
INSERT INTO employees (id, name, designation, manager, hired_on, salary, commission, dept) VALUES
(1,'JOHNSON','ADMIN',6,'1990-12-17',18000,NULL,4)
(2,'HARDING','MANAGER',9,'1998-02-02',52000,300,3)
(3,'TAFT','SALES I',2,'1996-01-02',25000,500,3)
(4,'HOOVER','SALES I',2,'1990-04-02',27000,NULL,3)
(5,'LINCOLN','TECH',6,'1994-06-23',22500,1400,4)
(6,'GARFIELD','MANAGER',9,'1993-05-01',54000,NULL,4)
(7,'POLK','TECH',6,'1997-09-22',25000,NULL,4)
(8,'GRANT','ENGINEER',10,'1997-03-30',32000,NULL,2)
(9,'JACKSON','CEO',NULL,'1990-01-01',75000,NULL,4)
(10,'FILLMORE','MANAGER',9,'1994-08-09',56000,NULL,2)
(11,'ADAMS','ENGINEER',10,'1996-03-15',34000,NULL,2)
(12,'WASHINGTON','ADMIN',6,'1998-04-16',18000,NULL,4)
(13,'MONROE','ENGINEER',10,'2000-12-03',30000,NULL,2)
(14,'ROOSEVELT','CPA',9,'1995-10-12',35000,NULL,1);
마지막으로 이제 몇 가지 쿼리를 실행할 수 있습니다.
SELECT designation,COUNT(*) AS nbr, (AVG(salary)) AS avg_salary FROM employees GROUP BY designation ORDER BY avg_salary DESC;
SELECT name,hired_on FROM employees ORDER BY hired_on;
MySQL 클라이언트로 ClickHouse 서버에 연결
ClickHouse는 MySQL 유선 프로토콜을 지원합니다. 구성 파일의 mysql_port 설정으로 활성화할 수 있습니다:
/etc/clickhouse_server/config.xml
.기본적으로
<mysql_port>9004</mysql_port>
이어야 합니다.섬기는 사람
다음 명령으로 ClickHouse 서버를 시작합니다. 이번에는 포트 9004가 노출됩니다.
docker run -d --name tutorial-clickhouse-server -p 9004:9004 --ulimit nofile=262144:262144 --volume=$HOME/tutorial_clickhouse_database:/var/lib/clickhouse yandex/clickhouse-server
고객
명령줄 도구 mysql을 사용하여 연결하는 예:
mysql --protocol tcp -u default -P 9004
연결에 성공하면 출력:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 21.8.10.19-ClickHouse
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
결론
방금 Docker를 사용하여 ClickHouse 서버를 시작하고 연결하고 사용자, 데이터베이스, 테이블을 만들고 이에 대해 몇 가지 쿼리를 실행했습니다. MySQL 클라이언트를 사용하여 ClickHouse 서버에 연결하는 방법도 배웠습니다.
이 자습서가 마음에 들면 ClickHouse 데이터베이스를 관리하고 SQL 검토, 버전 제어, 백업 및 복원 등을 지원하는 오픈 소스 웹 기반 스키마 변경 관리 도구인 제품Bytebase에도 관심을 가질 수 있습니다. ..
Reference
이 문제에 관하여(Docker로 ClickHouse 실행 및 MySQL 클라이언트를 사용하여 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bytebase/run-clickhouse-with-docker-and-connect-using-mysql-client-5bog텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)