В первую очередь необходимо создать пользователя-администратора, если такового еще нет.
Создать его можно в /etc/clickhouse-server/users.xml: отредактировать дефолтного пользователя, добавив или раскомментировав параметр access_management:
```
<username>
...
<access_management>1</access_management>
...
</username>
``` |
Либо создать отдельный файл для пользователя /etc/clickhouse-server/users.d/admin.xml:
<?xml version="1.0"?>
<yandex>
<users>
<!-- If user name was not specified, 'default' user is used. -->
<admin>
<password>password</password>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<access_management>1</access_management>
<quota>default</quota>
</admin>
<!-- Other users settings -->
</users>
</yandex>
|
Более подробная информация по созданию пользователей находится в документации "1.17 Установка ClickHouse".
Параметр access_management позволит пользоваться SQL-ориентированным управлением доступом, то есть использовать команды CREATE USER, GRANT PRIVILEGES и т.д.
После внесения изменений в конфигурацию необходимо перезапустить сервис:
service clickhouse-server restart |
Чтобы создать view необходимо, загрузить скрипт на создание представления: create-acct-view.sql. Находясь на хосте, на котором установлен ClickHouse, выполнить следующую команду:
clickhouse-client -u %администратор% --password %пароль_администратора% < create-acct-view.sql |
где %администратор% - логин пользователя ClickHouse, имеющего права администратора, %пароль_администратора% - его пароль.
Теперь нужно создать пользователя, которому будет доступен просмотр только представлений, но не оригинальных таблиц. Для этого требуется загрузить скрипт создания пользователя: create-read-user.sql. Затем, находясь на хосте, на котором установлен ClickHouse, выполнить следующую команду:
clickhouse-client -u %администратор% --password %пароль_администратора% -m < create-read-user.sql |
где %администратор% - логин пользователя ClickHouse, имеющего права администратора, %пароль_администратора% - его пароль.
После выполнения команды, будет создан пользователь ekhdreader с правами на чтение из ACCT_VIEW. Проверить создание пользователя можно следующим образом:
Подключиться к ClickHouse через клиент командной строки:
clickhouse-client -u ekhdreader --password ekhdpassword --database radius |
Проверить доступ до ACCT_VIEW:
test-vm1 :) show tables
SHOW TABLES
┌─name──────┐
│ ACCT_VIEW │
└───────────┘
1 rows in set. Elapsed: 0.002 sec.
```
```
test-vm1 :) select count() from ACCT_VIEW
SELECT count()
FROM ACCT_VIEW
┌─count()─┐
│ 2000 │
└─────────┘
1 rows in set. Elapsed: 0.013 sec. Processed 2.00 thousand rows, 8.00 KB (152.06 thousand rows/s., 608.22 KB/s.) |
Используется в случае необходимости получить представление (например, VIEW) из другой реляционной базы данных.
Создать database, таблицу с драйвером mysql и внешними данными.
CREATE DATABASE IF NOT EXISTS eltex_ems;
CREATE TABLE IF NOT EXISTS `eltex_ems`.`AP_VIEW` (
`id` UInt32,
`apName` String,
`apType` String,
`initTime` DateTime,
`IpAddress` Nullable(String),
`MacAddress` Nullable(String),
`ActNumber` Nullable(String),
`RegionId` Nullable(String),
`City` Nullable(String),
`Street` Nullable(String),
`HouseNumber` Nullable(String),
`Building` Nullable(String),
`Office` Nullable(String),
`OutOfService` Nullable(String)
) ENGINE = MySQL('127.0.0.1:3306', 'eltex_ems', 'AP_VIEW', 'ekhdreader', 'ekhdpassword'); |
Изменить адрес "127.0.0.1" на необходимый IP-адрес
Создать пользователя и дать ему привилегии на чтение данных:
CREATE USER OR REPLACE ekhdreader IDENTIFIED BY 'ekhdpassword' SETTINGS PROFILE 'readonly'; GRANT SELECT, SHOW TABLES, SHOW COLUMNS ON eltex_ems.AP_VIEW TO ekhdreader; GRANT SELECT(id, apName, apType, initTime, IpAddress, MacAddress, ActNumber, RegionId, City, Street, HouseNumber, Building, Office, OutOfService) ON eltex_ems.AP_VIEW TO ekhdreader; |
Подробнее описано на странице документации:
https://clickhouse.tech/docs/ru/engines/table-engines/integrations/mysql/