GRANT TO
Описание
Команда GRANT используется для следующих действий:
- Предоставление указанных привилегий пользователю или роли.
- Назначение указанных ролей пользователю.
Связанные команды
Синтаксис
Предоставление указанных привилегий пользователю или роли
GRANT <privilege_list>
ON { <priv_level>
| RESOURCE <resource_name>
| WORKLOAD GROUP <workload_group_name>
| COMPUTE GROUP <compute_group_name>
| STORAGE VAULT <storage_vault_name>
}
TO { <user_identity> | ROLE <role_name> }
Назначение указанных ролей пользователю
GRANT <role_list> TO <user_identity>
Обязательные параметры
1. <privilege_list>
Список предоставляемых привилегий, разделённых запятыми. В настоящее время поддерживаются следующие привилегии:
- NODE_PRIV: Права на управление узлами кластера, включая ввод узлов в эксплуатацию и вывод из неё.
- ADMIN_PRIV: Все привилегии, кроме NODE_PRIV.
- GRANT_PRIV: Права на управление привилегиями, включая создание и удаление пользователей и ролей, предоставление и отзыв привилегий, установку паролей и т. д.
- SELECT_PRIV: Право на чтение данных из указанной базы данных или таблицы.
- LOAD_PRIV: Право на загрузку данных в указанную базу данных или таблицу.
- ALTER_PRIV: Право на изменение схемы указанной базы данных или таблицы.
- CREATE_PRIV: Право на создание объектов в указанной базе данных или таблице.
- DROP_PRIV: Право на удаление указанной базы данных или таблицы.
- USAGE_PRIV: Права доступа к указанному ресурсу и группе рабочей нагрузки.
- SHOW_VIEW_PRIV: Право на просмотр операторов создания представлений.
Преобразование устаревших привилегий:
- ALL и READ_WRITE преобразуются в: SELECT_PRIV, LOAD_PRIV, ALTER_PRIV, CREATE_PRIV, DROP_PRIV.
- READ_ONLY преобразуется в SELECT_PRIV.
2. <priv_level>
Поддерживаются следующие четыре формы:
- ..*: Привилегии могут распространяться на все Catalog и все содержащиеся в них базы данных и таблицы.
- catalog_name..: Привилегии могут распространяться на все базы данных и таблицы в указанном Catalog.
- catalog_name.db.*: Привилегии могут распространяться на все таблицы в указанной базе данных.
- catalog_name.db.tbl: Привилегии могут распространяться на указанную таблицу в указанной базе данных.
3. <resource_name>
Задаёт имя ресурса. Значения % и * обозначают все ресурсы, однако шаблоны с подстановочными знаками, например res*, не поддерживаются.
4. <workload_group_name>
Задаёт имя группы рабочей нагрузки. Значения % и * обозначают все группы рабочей нагрузки, однако шаблоны с подстановочными знаками не поддерживаются.
5. <compute_group_name>
Задаёт имя вычислительной группы. Значения % и * обозначают все вычислительные группы, однако шаблоны с подстановочными знаками не поддерживаются.
6. <storage_vault_name>
Задаёт имя хранилища. Значения % и * обозначают все хранилища, однако шаблоны с подстановочными знаками не поддерживаются.
7. <user_identity>
Задаёт пользователя, которому предоставляются привилегии. Это должен быть пользователь user_identity, созданный с помощью CREATE USER. Хост в user_identity может быть доменным именем. В этом случае привилегии могут вступить в силу с задержкой примерно в 1 минуту.
8. <role_name>
Задаёт роль, которой предоставляются привилегии. Если указанная роль не существует, она будет создана автоматически.
9. <role_list>
Список назначаемых ролей, разделённых запятыми. Указанные роли должны существовать.
Начиная с версии 4.1.5, имя объекта, для которого задаются привилегии, может состоять не более чем из трёх компонентов: db, db.table или catalog.db.table, включая соответствующие формы с подстановочными знаками. Имена с более чем тремя компонентами отклоняются; лишние префиксы больше не игнорируются без уведомления.
Требования к правам доступа
Пользователи, выполняющие эту команду SQL, должны иметь как минимум следующие привилегии:
| Привилегия | Объект | Примечания |
|---|---|---|
| GRANT_PRIV | Пользователь или роль | Только пользователи или роли с привилегией GRANT_PRIV могут выполнять операцию GRANT. |
Начиная с версии 4.1.5, пользователю без прав ADMIN для предоставления или отзыва привилегий на столбцы требуется как существующая привилегия GRANT, так и соответствующая привилегия на таблицу либо соответствующая привилегия на каждый из перечисленных столбцов. Одной привилегии GRANT недостаточно для предоставления или отзыва привилегий на столбцы, которыми сам пользователь не обладает.
Примеры
-
Предоставить пользователю права на все Catalog, базы данных и таблицы:
GRANT SELECT_PRIV ON *.*.* TO 'jack'@'%'; -
Предоставить пользователю права на указанную таблицу в базе данных:
GRANT SELECT_PRIV,ALTER_PRIV,LOAD_PRIV ON ctl1.db1.tbl1 TO 'jack'@'192.8.%'; -
Предоставить роли права на указанную таблицу в базе данных:
GRANT LOAD_PRIV ON ctl1.db1.* TO ROLE 'my_role'; -
Предоставить пользователям доступ ко всем ресурсам:
GRANT USAGE_PRIV ON RESOURCE * TO 'jack'@'%'; -
Предоставить пользователю право на использование указанного ресурса:
GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO 'jack'@'%'; -
Предоставить ролям доступ к указанным ресурсам:
GRANT USAGE_PRIV ON RESOURCE 'spark_resource' TO ROLE 'my_role'; -
Назначить пользователю указанную роль:
GRANT 'role1','role2' TO 'jack'@'%'; -
Предоставить пользователю jack права на указанную группу рабочей нагрузки 'g1':
GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO 'jack'@'%'; -
Использовать шаблон для выбора всех групп рабочей нагрузки при предоставлении прав пользователю jack:
GRANT USAGE_PRIV ON WORKLOAD GROUP '%' TO 'jack'@'%'; -
Предоставить роли my_role права на группу рабочей нагрузки 'g1':
GRANT USAGE_PRIV ON WORKLOAD GROUP 'g1' TO ROLE 'my_role'; -
Разрешить пользователю jack просматривать оператор создания представления view1 в базе данных db1:
GRANT SHOW_VIEW_PRIV ON db1.view1 TO 'jack'@'%'; -
Предоставить пользователю право на использование указанной вычислительной группы:
GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO 'jack'@'%'; -
Предоставить роли право на использование указанной вычислительной группы:
GRANT USAGE_PRIV ON COMPUTE GROUP 'group1' TO ROLE 'my_role'; -
Предоставить пользователю право на использование всех вычислительных групп:
GRANT USAGE_PRIV ON COMPUTE GROUP '*' TO 'jack'@'%'; -
Предоставить пользователю право на использование указанного хранилища:
GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO 'jack'@'%'; -
Предоставить роли право на использование указанного хранилища:
GRANT USAGE_PRIV ON STORAGE VAULT 'vault1' TO ROLE 'my_role'; -
Предоставить пользователю право на использование всех хранилищ:
GRANT USAGE_PRIV ON STORAGE VAULT '*' TO 'jack'@'%';