全部產品
Search
文件中心

Lindorm:GRANT

更新時間:Sep 26, 2024

GRANT文法用於給授予指定許可權,例如表的讀寫權限、資料庫的所有許可權等。

適用引擎

GRANT文法適用於寬表引擎和時序引擎。無版本限制。

文法

grant_permission_statement ::=  GRANT privilege_definition ON resource_definition TO user_identifier 
privilege_definition       ::=  ALL | READ | WRITE | ADMIN | TRASH | SYSTEM
resource_definition        ::=  GLOBAL | DATABASE identifier | SCHEMA identifier | TABLE identifier

使用說明

GRANT語句是否可以執行成功,還取決於執行者自身擁有的許可權。

許可權(privilege_definition)

共以下幾種許可權:

許可權

說明

ALL或ALL PRIVILEGE

為使用者授予所有許可權,包括下述四種許可權。

READ

為使用者授予“讀”許可權。

WRITE

為使用者授予“寫”許可權。

ADMIN

為使用者授予“管理員”許可權。

重要

ADMIN許可權與READ、WRITE許可權是獨立的,授予了某個Database的ADMIN許可權並不意味著就能夠讀寫該Database下所有的表,需單獨添加表的讀寫權限。

TRASH

為使用者授予“刪除”許可權。

SYSTEM

為使用者授予叢集層面的系統管理權限。包含GLOBAL ADMIN許可權。

重要

不支援授予DATABASE粒度的SYSTEM許可權。

許可權範圍(resource_definition)

寬表引擎和時序引擎對GRANT語句可授權的資源範圍的支援情況如下:

許可權

寬表引擎

時序引擎

說明

GLOBAL

授予全域所有資源的特定許可權。

重要

建議不要輕易賦予GLOBAL許可權,特別是GLOBAL ALL PRIVILEGES。

DATABASE

授予指定Database的某個許可權。作用等同於SCHEMA。

說明

寬表引擎2.5.3.3及以上版本支援DATABASE關鍵字。2.5.3.3之前版本僅支援SCHEMA關鍵字。

TABLE

✖️

授予指定表的某個許可權。

許可權資源範圍的優先順序:GLOBAL > DATABASE(SCHEMA)> TABLE。即如果擁有了GLOBAL的READ許可權,則能讀取任意Database中的表。

在使用DATABASE、SCHEMA或TABLE關鍵字時,需添加對應層級的對象名稱(identifier)。例如DATABASE defaultSCHEMA defaultTABLE test分別表示資料庫default和表test。

授權對象(user_identifier

user_identifier為需要授權的使用者名稱。

樣本

授予全部許可權

為使用者user1授予資料庫db1的全部許可權。

GRANT ALL ON DATABASE db1 TO user1;
-- 或者
GRANT ALL ON SCHEMA db1 TO user1;

授予指定許可權

  • 為使用者user2授予資料庫db2中的表table2的管理員權限。

    GRANT ADMIN ON TABLE db2.table2 TO user2;
  • 為使用者user3授予當前資料庫中表table3的寫入權限。

    GRANT WRITE ON TABLE table3 TO user3; 
  • 為使用者user4授予全域讀許可權。

    GRANT READ ON GLOBAL TO user4;