第二章 SQL命令參考 GRANT

2021-08-09 23:54:19 字數 4796 閱讀 6521

grant

defines accessprivileges.

概要

|

grant [,...] | all [privileges] }

on[table]tablename [, ...]

to [, ...] [with grant option]

grant [,...] | all [privileges] }

onsequencesequencename [, ...]

to [, ...] [with grant option]

grant [,...] | all

[privileges]}

ondatabasedbname [, ...]

to [, ...] [with grant option]

grant

onfunctionfuncname ( [ [argmode] [argname]argtype[, ...]

to [, ...] [with grant option]

grant

onlanguagelangname [, ...]

to [, ...] [with grant option]

grant [,...] | all [privileges] }

onschemaschemaname [, ...]

to [, ...] [with grant option]

grant

ontablespacetablespacename [, ...]

to [, ...] [with grant option]

grantparent_role [, ...]

tomember_role [, ...] [with admin option]

grant

onprotocolprotocolname

tousername 描述

grant命令有兩個基本變體:乙個授予資料庫物件(表,檢視,序列,資料庫,函式,過程語言,模式或表空間)的許可權,以及授予角色成員身份的許可權。

資料庫物件上的grant

grant命令的這個變體給出乙個或多個角色的資料庫物件的特定許可權。這些許可權將被新增到已經授予的許可權(如果有的話)。

關鍵字public表示將授予所有角色的許可權,包括稍後可能建立的角色。 public可能被認為是乙個隱含定義的組級角色,始終包含所有角色。任何特定角色將具有直接授予的特權,授予其目前為其成員的任何角色的特權以及授予public的特權。

如果指定了with grant option,則該許可權的收件人可能會將其授予其他人。沒有授權選項,收件人不能這樣做。撥款選項不能授予public。

沒有必要向物件的所有者(通常是建立它的角色)授予許可權,因為所有者預設情況下具有所有許可權。放棄物件或以任何方式更改其定義的權利不被授予的許可權描述;所有者是固有的,不能被授予或撤銷。所有者隱含地還包含物件的所有授權選項。

根據物件的型別,初始預設許可權可能包括向public授予一些許可權。對於表,模式和表空間,預設值不是公共訪問;資料庫的connect特權和temp表建立特權; execute功能特權;和usage語言特權。物件所有者當然可以撤銷這些許可權。

授予角色

grant命令的這個變體將角色的成員資格授予乙個或多個其他角色。成員身份是重要的,因為它向每個成員傳達了角色授予的特權。

如果指定with admin option,則成員可能會將角色的成員資格授予他人,並撤銷該角色的成員身份。資料庫超級使用者可以向任何人授予或撤銷任何角色的會員資格。具有createrole許可權的角色可以授予或撤銷不是超級使用者的任何角色的成員資格。

與具有特權的情況不同,不能將角色的成員資格授予public。

授權協議

建立自定義協議後,請指定create trustedprotocol以允許除擁有者之外的任何使用者訪問它。如果協議不受信任,您不能授予任何其他使用者使用它來讀取或寫入資料的許可權。建立trusted協議後,您可以使用grant命令指定哪些其他使用者可以訪問它。

•允許使用者使用可信協議建立可讀外部表

grant select on protocol protocolname tousername

•允許使用者建立具有可信協議的可寫外部表

grant insert on protocol protocolname tousername

•允許使用者使用可信協議建立可讀寫的外部表

grant all on protocol protocolname tousername

parameter

select

允許從指定的表,檢視或序列的任何列中進行select。也允許使用copy to。對於序列,此許可權還允許使用currval函式。

insert

允許在指定的表中插入新行。也允許copy from。

update

允許指定表的任何列的update。 select ...for update和select ... for share也需要此許可權(以及select許可權)。對於序列,此特權允許使用nextval和setval函式。

delete

允許從指定的表刪除一行。

references

這個關鍵字是接受的,雖然greenplum資料庫目前不支援外來鍵限制。要建立外來鍵約束,必須在引用和引用的表上都具有此許可權。

trigger

允許在指定的表上建立乙個觸發器。

注意:greenplum資料庫不支援觸發器。

truncate

允許truncate從指定的表中的所有行。

create

對於資料庫,允許在資料庫中建立新的模式。

對於模式,允許在模式中建立新物件。要重新命名現有物件,您必須擁有該物件並擁有包含模式的此許可權。

對於表空間,允許在表空間中建立表和索引,並允許建立具有表空間作為其預設表空間的資料庫。 (請注意,撤消此許可權不會更改現有物件的位置。)

connect

允許使用者連線到指定的資料庫。在連線啟動時檢查此特權(除了檢查pg_hba.conf強加的任何限制)。

temporary temp

允許在使用資料庫時建立臨時表。

execute

允許使用指定的函式和使用在函式頂部實現的任何操作符。這是唯一適用於功能的特權型別。 (此語法也適用於聚合函式。)

usage

對於程式語言,允許使用指定的語言來建立該語言的函式。這是唯一適用於程式語言的特權型別。

對於模式,允許對指定模式中包含的物件進行訪問(假設物件的特權要求也得到滿足)。基本上這允許受讓人檢視模式中的物件。

對於序列,此許可權允許使用currval和nextval函式。

all privileges

一次授予所有可用許可權。 privileges關鍵字在greenplum資料庫中是可選的,儘管它是嚴格sql所要求的。

public

乙個特殊的組級角色,表示將授予所有角色的許可權,包括稍後可能建立的角色。

with grantoption

特權的接收者可能會將其授予其他人。

with admin option

角色的成員可能會將其角色授予他人。

notes

無論物件許可權設定如何,資料庫超級使用者都可以訪問所有物件。此規則的乙個例外是檢視物件。檢視中引用的表的訪問由檢視所有者的許可權決定,而不是當前使用者(即使當前使用者是超級使用者)。

如果超級使用者選擇發出grant或revoke命令,則該命令將被執行,就好像它是由乙個物件的所有者發出的。特別是,通過這樣的命令授予的特權將被物件所有者授予。對於角色成員資格,成員資格似乎已被包含角色本身授予。

grant和revoke也可以由不是受影響的物件的所有者的角色來完成,而是擁有物件的角色的成員,也可以是在物件上擁有grantoption許可權的角色的成員。在這種情況下,許可權將被記錄為實際擁有物件的角色或擁有grantoption許可權的角色。

授予表的許可權不會自動擴充套件表所使用的任何序列的許可權,包括與serial列相關的序列。序列上的許可權必須單獨設定。

greenplum資料庫不支援授予或撤銷表的各個列的許可權。

一種可能的解決方法是建立乙個只包含所需列的檢視,然後向該檢視授予許可權。

使用psql的\ z meta-command來獲取有關物件的現有許可權的資訊。.示例

授予對錶mytabie上的所有角色的insert許可權:

grant inserton mytable to public;

將所有可用的許可權授予角色sally,以獲取檢視。 請注意,雖然上述將確實授予所有特權,如果由超級使用者或topten的所有者執行,當由其他人執行時,它將僅授予授予角色授予選項的許可權。

grant allprivileges on topten to sally;

grantmembership in role admins to user joe:

grant adminsto joe;

相容性privileges關鍵字在sql標準中是必需的,但在greenplum資料庫中是必需的。 sql標準不支援為每個命令設定多個物件的許可權。

greenplum資料庫允許物件所有者撤銷他自己的普通許可權:例如,表所有者可以通過撤銷自己的insert,update,delete和truncate許可權使表變為唯讀。 這根據sql標準是不可能的。 greenplum資料庫將所有者的許可權視為業主自己授予的; 所以他也可以撤銷他們。 在sql標準中,所有者的許可權由假定的系統實體授予。

sql標準允許為表中的各個列設定許可權。

sql標準提供對其他型別物件的usage特權:character sets, collations, translations,domains.。

資料庫,表空間,模式和語言的許可權是greenplum資料庫擴充套件。

相關參考

revoke

第二章 OSI參考模型

一 產生背景 1.伴隨著計算機網路的飛躍發展,各大廠商根據自己的協議生產出了不同的硬體和軟體 二 osi參考模型 1.osi參考模型定義了網路中裝置所遵守的層次結構 分層結構的優點 1 開放的標準化介面 2 多廠商相容性 3 易於理解 學習和更新協議標準 4 實現模組化工程,降低了開發實現的複雜度 ...

sql高階第二章

use master作用切換當前資料庫 變數要先用declare 關鍵字進行宣告,然後用set 或select 賦值 set 直接賦值 select 除有set 的功能 還可以將某個查詢結果直接賦給某個值 區域性變數前必須用 作字首 全域性變數前必須用 作字首 變數輸出可以用print 或selec...

第二章 簡單SQL語句

選擇全部列 select from departments 選擇特定的列 select department id,location id from departments 使用數 算符 select last name,salary,salary 300 from employees 操作符優先順...