GRANT

向用户或主体授予对象权限。 授予对数据库的权限(例如 SELECT 权限)会隐式授予对该数据库中所有对象的此权限。 授予对目录的特定权限会隐式授予对目录中所有数据库的此权限。

语法

GRANT
  privilege_type [, privilege_type ] ...
  ON (CATALOG | DATABASE <database-name> | TABLE <table-name> | VIEW <view-name> | FUNCTION <function-name> | ANONYMOUS FUNCTION | ANY FILE)
  TO principal

privilege_type
  : SELECT | CREATE | MODIFY | READ_METADATA | CREATE_NAMED_FUNCTION | ALL PRIVILEGES
GRANT
  USAGE
  ON (CATALOG | DATABASE <database-name>)
  TO principal
principal
  : `<user>@<domain-name>` | <group-name>

若要授予所有用户某个权限,请在 TO 之后指定关键字 users

示例

GRANT USAGE, SELECT ON DATABASE <database-name> TO `<user>@<domain-name>`
GRANT SELECT ON ANONYMOUS FUNCTION TO `<user>@<domain-name>`
GRANT SELECT ON ANY FILE TO `<user>@<domain-name>`

基于视图的访问控制

可以通过授予对包含任意查询的派生视图的访问权限来配置细粒度的访问控制(例如,对符合特定条件的行和列)。

示例

CREATE OR REPLACE VIEW <view-name> AS SELECT columnA, columnB FROM <table-name> WHERE columnC > 1000;
GRANT SELECT ON VIEW <view-name> TO `<user>@<domain-name>`;

有关所需表所有权的详细信息,请参阅常见问题 (FAQ)