?
本文檔使用
php中文網(wǎng)手冊(cè) 發(fā)布
如果你創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)對(duì)象,那么你就成為它的所有者。缺省時(shí), 只有對(duì)象的所有者可以在對(duì)象上做任何事情。為了允許其它用戶(hù)使用它 ,我們必須賦予他們權(quán)限。不過(guò)超級(jí) 用戶(hù)總是可以操作任何對(duì)象。)
有好多種不同的權(quán)限:SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, and USAGE. 適用于特定對(duì)象的權(quán)限因?qū)ο箢?lèi)型(表/函數(shù)等)不同而不同。有關(guān) PostgreSQL 所支持的不同類(lèi)型的權(quán)限的完整信息, 請(qǐng)參考GRANT的手冊(cè)頁(yè)。下面的章節(jié)將為你展示如何利 用這些權(quán)限。
修改或者刪除一個(gè)對(duì)象的權(quán)限永遠(yuǎn)是所有者獨(dú)有的權(quán)限。
Note: 要改變一個(gè)表、索引、序列、或者視圖的所有者,使用ALTER TABLE命令, 以及對(duì)應(yīng)其它對(duì)象類(lèi)型的ALTER命令。
使用GRANT命令賦予權(quán)限。因此,如果joe 是一個(gè)已經(jīng)存在的用戶(hù),而accounts是一個(gè)已經(jīng)存在的表, 更新表的權(quán)限可以用下面的命令賦予:
GRANT UPDATE ON accounts TO joe;
在權(quán)限的位置寫(xiě)上ALL則賦予所有與該對(duì)象類(lèi)型相關(guān)的權(quán)限。
名為PUBLIC的特殊""user""可以用于將權(quán)限 賦予系統(tǒng)中的所有用戶(hù)。另外,還可以使用""group""角色來(lái)幫助管理一群 用戶(hù)的權(quán)限,細(xì)節(jié)可參見(jiàn)Chapter 20。
可以使用REVOKE命令撤銷(xiāo)權(quán)限:
REVOKE ALL ON accounts FROM PUBLIC;
對(duì)象所有者的特殊權(quán)限(也就是,DROP,GRANT, REVOKE,等權(quán)限)總是隱含地屬于所有者,并且不能賦予或者撤銷(xiāo)。 但是對(duì)象所有者可以選擇撤銷(xiāo)自己的普通權(quán)限,比如把一個(gè)表做成對(duì)自己和別人都是只讀的。
最初,只有對(duì)象所有者(或者超級(jí)用戶(hù))可以賦予或者撤銷(xiāo)對(duì)象的權(quán)限。 但是,我們可以賦予一個(gè)""with grant option""權(quán)限,這樣 就允許接受權(quán)限的人將該權(quán)限轉(zhuǎn)授他人。如果授權(quán)選項(xiàng)后來(lái)被撤銷(xiāo), 那么所有那些從這個(gè)接受者接受了權(quán)限的用戶(hù)(直接或間級(jí))都將失去該權(quán)限. 細(xì)節(jié)詳見(jiàn)GRANT和REVOKE手冊(cè)頁(yè)。