#1
ClickHouse supports role-based access control (RBAC) to secure queries. With Spring Boot, you can map user roles to database permissions easily.

1. Create Users in ClickHouse

CREATE USER app_user IDENTIFIED BY 'secret';
CREATE USER readonly_user IDENTIFIED BY 'readonly';
Each user has different privileges.

2. Define Roles

CREATE ROLE writer;
CREATE ROLE reader;
Roles simplify permission management across users.

3. Grant Privileges to Roles

GRANT SELECT ON default.* TO reader;
GRANT INSERT, SELECT ON default.* TO writer;
The reader role can only query, while writer can insert and query.

4. Assign Roles to Users

GRANT reader TO readonly_user;
GRANT writer TO app_user;
This links users to their allowed database actions.

5. Configure Spring Boot Connection

spring:
  datasource:
    url: jdbc:clickhouse://localhost:8123/default
    username: app_user
    password: secret
Spring Boot connects using a specific role’s permissions.

6. Testing Permissions

  • Use app_user → can insert and read.
  • Use readonly_user → can only query.
  • Unauthorized actions throw errors.

image quote pre code