PostgreSQL權限講解


當創建一個數據庫對象時,它就被賦予了所有者。這個所有者通常是執行創建語句的角色。對大多數類型的對象,初始狀態只有其所有者(或者超級管理員)可以對它做任何事情。要允許其他角色使用它,必須要經過權限授予。

有好多種不同的權限: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的特殊"用戶"可以用於將權限賦予系統中的所有用戶。另外,還可以使用"組"角色來幫助管理一群用戶的權限。

可以使用REVOKE命令撤銷權限:

REVOKE ALL ON accounts FROM PUBLIC;

對象所有者的特殊權限(也就是DROP, GRANT, REVOKE 等權限)總是隱含地屬於所有者,並且不能賦予或者撤銷。但是對象所有者可以選擇撤銷自己的普通權限,比如把一個表做成對自己和別人都是只讀的。

最初,只有對象所有者(或者超級用戶)可以賦予或者撤銷對象的權限。但是,我們可以賦予一個"with grant option"權限,這樣就允許接受權限的人將該權限轉授他人。如果授權選項后來被撤銷,那么所有那些從這個接受者接受了權限的用戶(直接或間級)都將失去該權限。

參考資料

http://www.infocool.net/PostgreSQL/index.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM