readonly của ClickHouse được bật. Bật Write access khi bạn muốn agent thay đổi dữ liệu, và bật riêng Allow DROP and TRUNCATE khi bạn muốn agent xóa đối tượng.
Điều kiện tiên quyết
- Một server ClickHouse có thể tiếp cận từ CloudThinker qua HTTP interface của nó (
8443với TLS,8123không TLS). ClickHouse Cloud, cụm tự host, cụm chạy bằng operator trên Kubernetes, và ClickHouse quản lý bởi nhà cung cấp khác đều hoạt động — CloudThinker chỉ cần cổng đó. - Quyền admin để tạo người dùng riêng.
- Cổng TCP native (
9000) không được sử dụng và không cần mở.
Thiết lập
1
Tạo người dùng riêng
Kết nối với tư cách admin và tạo người dùng CloudThinker:
2
Cấp quyền đọc
Cấp
SELECT trên các cơ sở dữ liệu mà agent nên thấy, cùng với SHOW:3
Ghim người dùng ở chế độ chỉ đọc (khuyến nghị)
Kết nối mặc định là chỉ đọc, nhưng một settings profile giúp ràng buộc này được giữ ở phía server, độc lập với mọi client:Bỏ qua bước này nếu bạn định bật Write access. Profile sử dụng
READONLY, nên người dùng không thể gỡ bỏ nó, và công tắc của CloudThinker cũng không thể ghi đè nó.4
Cho phép truy cập bảng hệ thống (tùy chọn)
Kích thước bảng, số lượng part và metadata cột đến từ
system:5
Cấu hình truy cập mạng
Mở HTTP interface cho CloudThinker:
- ClickHouse Cloud: thêm CloudThinker vào IP access list của service, tại Settings → Security của service đó.
- Tự host: cho phép inbound
8443(hoặc8123) từ CloudThinker trong firewall hoặc security group của bạn.
6
Thêm kết nối trong CloudThinker
Điều hướng đến Connections → ClickHouse và nhập:
- Host: chỉ hostname, không có scheme và không có port, ví dụ
abc123.ap-southeast-1.aws.clickhouse.cloud - Port:
8443với TLS,8123không TLS - Username:
cloudthinker - Password: mật khẩu bạn đặt ở trên
- Use TLS:
Yescho ClickHouse Cloud và mọi endpoint công khai - Verify the TLS certificate: để ở
Yes; chỉ tắt khi chứng chỉ là self-signed hoặc do CA nội bộ cấp - Default database: tùy chọn; để trống để dùng mặc định của server
- Write access: để ở
Read-onlytrừ khi agent cần thay đổi dữ liệu - Allow DROP and TRUNCATE: chỉ xuất hiện khi write access đã bật; để ở
Blockedtrừ khi bạn muốn agent xóa đối tượng
SELECT version() duy nhất dưới người dùng đó để kiểm tra thông tin đăng nhập, và thông báo Connected nêu rõ phiên bản ClickHouse đã tiếp cận, tên người dùng đã dùng, và database mặc định nếu bạn có đặt. Mọi trường hợp khác đều trả về một lý do cụ thể — xem Khắc phục sự cố.Chi tiết kết nối
Quyền bắt buộc
Tối thiểu
Khuyến nghị (phân tích toàn diện)
system.query_log là thứ biến “dashboard này chậm” thành một danh sách xếp hạng các truy vấn gây ra điều đó.
Quyền ghi (chỉ khi bạn bật)
*.*. Một grant mà người dùng không có chính là ranh giới mà công tắc Write access không thể vượt qua.
Khả năng của agent
Sau khi kết nối, Tony có thể:Xác minh kết nối
Ví dụ prompt
Quyền ghi
Kết nối được tạo ra ở chế độ chỉ đọc, và hai công tắc mở nó ra từng bước một.
Ba điều cần cân nhắc trước khi bật quyền ghi:
Blockedbảo vệ bảng, không bảo vệ dữ liệu trong bảng. Nó từ chối các câu lệnhDROP TABLEvàTRUNCATE. Nó không từ chốiALTER TABLE ... DELETE,DROP PARTITIONhayDROP COLUMN, mỗi lệnh trong số đó đều xóa dữ liệu trong khi vẫn giữ nguyên bảng. Hãy xemFull accesslà “agent có thể phá hủy dữ liệu”, bất kể công tắc thứ hai ở trạng thái nào.- ClickHouse không có transaction. Một lệnh
ALTER TABLE ... DELETElà một mutation bất đồng bộ và một lệnhDROPcó hiệu lực ngay lập tức. Không lệnh nào có thể rollback, nên khôi phục đồng nghĩa với việc phục hồi từ bản backup. - Grant mới là biện pháp kiểm soát mạnh hơn. Các công tắc này chỉ quyết định CloudThinker có gửi
readonly=1hay không; chúng không bao giờ cấp một đặc quyền mà người dùng ClickHouse chưa có. Hãy cấp cho người dùng CloudThinker quyền ghi trên đúng những cơ sở dữ liệu bạn muốn cho phép tiếp cận, và công tắc không thể vượt quá phạm vi đó.
Khắc phục sự cố
ClickHouse rejected the username or password
ClickHouse rejected the username or password
ClickHouse đã trả lời và từ chối thông tin đăng nhập.
- Xác nhận người dùng tồn tại:
SHOW USERS; - Gõ lại mật khẩu thay vì dán. Một giá trị dán vào có kèm ký tự xuống dòng sẽ bị từ chối trước cả khi CloudThinker liên hệ server.
- ClickHouse Cloud vô hiệu hóa xác thực bằng mật khẩu với một số người dùng được cấp qua SSO. Hãy tạo một người dùng cơ sở dữ liệu riêng thay vì dùng lại tài khoản đăng nhập console.
ClickHouse has no database named …
ClickHouse has no database named …
Tên trong Default database không phải là database mà ClickHouse tìm thấy. Tên database phân biệt chữ hoa chữ thường, nên hãy kiểm tra chính tả, hoặc để trống trường này để dùng mặc định của server.
ClickHouse rejected the request path. Check the port.
ClickHouse rejected the request path. Check the port.
Có thứ gì đó đã trả lời, nhưng đó không phải HTTP interface của ClickHouse.
- Xác nhận Port và Use TLS khớp nhau:
8443với TLS,8123không TLS. - Cổng TCP native
9000không phải là HTTP interface. Trỏ kết nối vào nó sẽ thất bại.
ClickHouse is unreachable
ClickHouse is unreachable
Không có gì trả lời tại host và port đó.
- Kiểm tra Host không mang tiền tố
https://và không có hậu tố:port. Cả hai thuộc về các trường riêng của chúng. - ClickHouse Cloud: thêm CloudThinker vào IP access list của service.
- Tự host: xác nhận
<listen_host>bao gồm interface bạn đã mở, và firewall cho phép8443hoặc8123. - Lệch TLS cũng biểu hiện y hệt — bật Use TLS với một cổng HTTP thuần, hoặc tắt nó với một cổng chỉ nhận HTTPS.
ClickHouse did not answer in time
ClickHouse did not answer in time
Địa chỉ tiếp cận được nhưng không có phản hồi nào đến trước khi phép kiểm tra hết giờ. Trên ClickHouse Cloud, nguyên nhân thường là tự động nghỉ: một service không hoạt động sẽ bị tạm dừng, và các kết nối đến nó sẽ timeout cho đến khi service khởi động lại. Hãy đánh thức service rồi kết nối lại.
Cannot execute query in readonly mode
Cannot execute query in readonly mode
Kết nối đang ở chế độ chỉ đọc, đây là mặc định. Nếu agent cần có khả năng ghi, hãy đặt Write access thành
Full access rồi kết nối lại.Nếu sau đó vẫn thất bại, ràng buộc nằm ở phía server: kiểm tra xem người dùng có mang settings profile readonly hay không (SHOW CREATE USER cloudthinker;) và người dùng đó có các grant ghi mà truy vấn cần hay không.DROP bị từ chối dù đã bật write access
DROP bị từ chối dù đã bật write access
DROP và TRUNCATE nằm sau công tắc riêng của chúng. Hãy đặt Allow DROP and TRUNCATE thành Allowed. Nó chỉ xuất hiện khi Write access ở Full access.Danh sách bảng rỗng
Danh sách bảng rỗng
- Người dùng cần
SHOW TABLESvàSELECTtrên cơ sở dữ liệu, không chỉ trên từng bảng riêng lẻ. - Cấp
SELECT ON system.tablesđể các truy vấn metadata trả về dữ liệu.
Bảo mật
- Quyền tối thiểu — chỉ cấp các quyền mà agent cần cho trường hợp sử dụng của bạn; bắt đầu với quyền chỉ đọc và mở rộng sau.
- Chỉ đọc theo mặc định — sử dụng thông tin xác thực chỉ đọc trừ khi bạn muốn agent thực hiện thay đổi qua kết nối này.
- Xoay vòng thông tin xác thực — xoay vòng khóa và token theo lịch trình thông thường của bạn; CloudThinker sẽ lấy giá trị mới khi bạn cập nhật kết nối.
- Thu hồi khi bàn giao — xóa thông tin xác thực tại nhà cung cấp khi bạn xóa một kết nối hoặc khi đồng nghiệp rời nhóm.
- TLS trên endpoint công khai — giữ Use TLS bật cho ClickHouse Cloud và mọi endpoint nằm ngoài mạng riêng.
- Người dùng riêng — không bao giờ dùng lại tài khoản admin; một người dùng riêng giúp audit trail dễ đọc.
- Grant quan trọng hơn công tắc — các đặc quyền trên người dùng ClickHouse mới là ranh giới bền vững. Công tắc Write access quyết định CloudThinker có yêu cầu ghi hay không; grant quyết định ClickHouse có cho phép ghi hay không.
- Chỉ đọc ở phía server — với một kết nối không bao giờ được ghi, hãy thêm settings profile ở bước 3.
READONLYkhiến nó không thể bị gỡ bỏ từ phía client.
Liên quan
Tony Agent
Agent tối ưu cơ sở dữ liệu
Kết nối PostgreSQL
Thiết lập tương tự cho cơ sở dữ liệu PostgreSQL