В первую очередь необходимо создать пользователя-администратора, если такового еще нет.
Создать его можно в /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.)
Проксирование данных из MySQL
Используется в случае необходимости получить представление (например, 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/