天天看點

PostgreSQL 10.1 手冊_部分 II. SQL 語言_第 5 章 資料定義_5.6. 權限

5.6. 權限

一旦一個對象被建立,它會被配置設定一個所有者。所有者通常是執行建立語句的角色。對于大部分類型的對象,初始狀态下隻有所有者(或者超級使用者)能夠對該對象做任何事情。為了允許其他角色使用它,必須配置設定權限。

有多種不同的權限:

SELECT

INSERT

UPDATE

DELETE

TRUNCATE

REFERENCES

TRIGGER

CREATE

CONNECT

TEMPORARY

EXECUTE

以及

USAGE

。可以應用于一個特定對象的權限随着對象的類型(表、函數等)而不同。PostgreSQL所支援的不同類型的完整權限資訊請參考

GRANT

。下面的章節将簡單介紹如何使用這些權限。

修改或銷毀一個對象的權力通常是隻有所有者才有的權限。

一個對象可以通過該對象類型相應的

ALTER

指令來重新配置設定所有者,例如

ALTER TABLE

。超級使用者總是可以做到這點,普通角色隻有同時是對象的目前所有者(或者是擁有角色的一個成員)以及新擁有角色的一個成員時才能做同樣的事。

要配置設定權限,可以使用

GRANT

指令。例如,如果

joe

是一個已有角色,而

accounts

是一個已有表,更新該表的權限可以按如下方式授權:

GRANT UPDATE ON accounts TO joe;      

ALL

取代特定權限會把與對象類型相關的所有權限全部授權。

一個特殊的名為

PUBLIC

的“角色”可以用來向系統中的每一個角色授予一個權限。同時,在資料庫中有很多使用者時可以設定“組”角色來幫助管理權限。詳見

第 21 章

為了撤銷一個權限,使用

REVOKE

指令:

REVOKE ALL ON accounts FROM PUBLIC;      

對象擁有者的特殊權限(即執行

DROP

GRANT

REVOKE

等的權力)總是隐式地屬于擁有者,并且不能被授予或撤銷。但是對象擁有者可以選擇撤銷他們自己的普通權限,例如把一個表變得對他們自己和其他人隻讀。

一般情況下,隻有對象擁有者(或者超級使用者)可以授予或撤銷一個對象上的權限。但是可以在授予權限時使用“with grant option”來允許接收人将權限轉授給其他人。如果後來授予選項被撤銷,則所有從接收人那裡獲得的權限(直接或者通過授權鍊獲得)都将被撤銷。更多詳情請見

REVOKE

參考頁。

本文轉自PostgreSQL中文社群,原文連結: