我以scott/tiger登入以後建立了表以後插入資料提示我插入成功了,但是在查詢資料的時候是沒有記錄的,原因是我的scott使用者沒有對這個表插入的許可權。這時要以system登入以後用grant賦予scottr 中某個表的相應的許可權。 GRANT 名稱 GRANT— 賦予一個使用者,一個組或所有使用者存取權限 GRANTprivilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username } 輸入 privilege 可能的許可權有: SELECT 訪問聲明的表/視圖的所有列/欄位. INSERT 向聲明的表中插入所有欄欄位. UPDATE 更新聲明的所有列/欄位. DELETE 從聲明的表中刪除所有行. RULE 在表/視圖上定義規則 (參見 CREATE RULE 語句). ALL 賦予所有許可權. object 賦予許可權的對象名.可能的對象是: table (表) view (視圖) sequence (序列) index (索引) PUBLIC 代表是所有使用者的簡寫. GROUP group 將要賦予許可權的組 group .目前的版本中,組必須是用下面方法顯式建立的. username 將要賦予許可權的使用者名稱.PUBLIC 是代表所有使用者的簡寫. 輸出 CHANGE 如果成功,返回此資訊. ERROR: ChangeAcl: class "object" not found 如果所聲明的對象不可用或不可能對聲明的組或使用者賦予許可權. 描述 GRANT允許對象的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的許可權.對象建立後,除了建立者外,除非建立者賦予(GRANT)許可權,其他人沒有訪問對象的許可權. 一旦使用者有某對象的許可權,他就可以使用那個特權.不需要給建立者賦予(GRANT)對象的許可權,建立者自動擁有對象的所有許可權,包括刪除它的許可權. 注意 目前,要想在 Postgres 裡面只賦予幾列許可權,你必須建立一個包含那幾列的視圖(view),然後把許可權賦予那幾個視圖。 使用 psql /z 命令擷取關於現存對象許可權的更多資訊: Database = lusitania +------------------+---------------------------------------------+ | Relation | GRANT/Revoke Permissions | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","group todos=rw"} | +------------------+---------------------------------------------+ Legend: uname=arwR -- privileges granted to a user group gname=arwR -- privileges granted to a GROUP =arwR -- privileges granted to PUBLIC r -- SELECT w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL 小技巧: 目前,要建立一個 GROUP (組), 你將不得不手工向表 pg_group 中插入資料,像: INSERT INTO pg_group VALUES ('todos');CREATE USER miriam IN GROUP todos; 參考 REVOKE 語句重新分配存取權限. 用法 給所有使用者向表 films 插入記錄的許可權: GRANTINSERT ON films TO PUBLIC; 賦予使用者 manuel 操作視圖 kinds 的所有許可權: GRANTALL ON kinds TO manuel; 相容性 SQL92 SQL92GRANT文法允許對錶中的某單獨列/欄位設定許可權,並且允許設定一許可權以賦予別人相同許可權. GRANTprivilege [, ...] ON object [ ( column [, ...] ) ] [, ...] TO { PUBLIC | username [, ...] } [ WITHGRANTOPTION ] 這些欄位與 Postgres 實現是相容的,除了下面一些例外: privilege SQL92 允許聲明附加的許可權: SELECT REFERENCES 允許在一個聲明的表的整合約束中使用某些或全部列/欄位. USAGE 允許使用一個域,字元集,集合或事務.如果聲明的對象不是表/視圖, privilege 只能聲明為 USAGE. object [ TABLE ] table SQL92 允許一個附加的非函數關鍵字 TABLE. CHARACTER SET 允許使用聲明的字元集. COLLATION 允許使用聲明的集合序列. TRANSLATION 允許使用聲明的字元集轉換. DOMAIN 允許使用聲明的域. WITHGRANTOPTION 允許向別人賦予同樣許可權 REVOKENameREVOKE -- 刪除存取權限. SynopsisREVOKE { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ]object[, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONfuncname([type, ...]) [, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]REVOKE { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGElangname[, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]描述REVOKE允許一個對象的建立者撤銷以前 賦予(別人)的許可權,可以是撤銷一個或多個使用者或者一組使用者的許可權. 關鍵字PUBLIC代表隱含定義的擁有所有使用者的組. 請注意,任何特定的使用者都將擁有直接賦予他/她的許可權,加上 他/她所處的任何組,以及再加上賦予PUBLIC的許可權的總和.因此,舉例來說,廢止PUBLIC的 SELECT 許可權並不意味著所有使用者都失去了對該對象的 SELECT 許可權∶ 那些直接得到許可權賦予的以及通過一個組得到許可權的人仍然擁有該許可權. 參閱 GRANT 命令的描述擷取權限類別型的 含義. 注意使用psql的/z命令 顯示在一個現存對象上賦予的許可權.又見 GRANT 擷取關于格式的資訊. 例子撤銷公眾在表films上的插入許可權∶ REVOKE INSERT ON films FROM PUBLIC; 廢除使用者manuel對視圖kinds的所有許可權∶ REVOKE ALL PRIVILEGES ON kinds FROM manuel |
我以scott/tiger登入以後建立了表以後插入資料提示我插入成功了,但是在查詢資料的時候是沒有記錄的,原因是我的scott使用者沒有對這個表插入的許可權。這時要以system登入以後用grant賦予scottr 中某個表的相應的許可權。 GRANT 名稱 GRANT— 賦予一個使用者,一個組或所有使用者存取權限 GRANTprivilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username } 輸入 privilege 可能的許可權有: SELECT 訪問聲明的表/視圖的所有列/欄位. INSERT 向聲明的表中插入所有欄欄位. UPDATE 更新聲明的所有列/欄位. DELETE 從聲明的表中刪除所有行. RULE 在表/視圖上定義規則 (參見 CREATE RULE 語句). ALL 賦予所有許可權. object 賦予許可權的對象名.可能的對象是: table (表) view (視圖) sequence (序列) index (索引) PUBLIC 代表是所有使用者的簡寫. GROUP group 將要賦予許可權的組 group .目前的版本中,組必須是用下面方法顯式建立的. username 將要賦予許可權的使用者名稱.PUBLIC 是代表所有使用者的簡寫. 輸出 CHANGE 如果成功,返回此資訊. ERROR: ChangeAcl: class "object" not found 如果所聲明的對象不可用或不可能對聲明的組或使用者賦予許可權. 描述 GRANT允許對象的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的許可權.對象建立後,除了建立者外,除非建立者賦予(GRANT)許可權,其他人沒有訪問對象的許可權. 一旦使用者有某對象的許可權,他就可以使用那個特權.不需要給建立者賦予(GRANT)對象的許可權,建立者自動擁有對象的所有許可權,包括刪除它的許可權. 注意 目前,要想在 Postgres 裡面只賦予幾列許可權,你必須建立一個包含那幾列的視圖(view),然後把許可權賦予那幾個視圖。 使用 psql /z 命令擷取關於現存對象許可權的更多資訊: Database = lusitania +------------------+---------------------------------------------+ | Relation | GRANT/Revoke Permissions | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","group todos=rw"} | +------------------+---------------------------------------------+ Legend: uname=arwR -- privileges granted to a user group gname=arwR -- privileges granted to a GROUP =arwR -- privileges granted to PUBLIC r -- SELECT w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL 小技巧: 目前,要建立一個 GROUP (組), 你將不得不手工向表 pg_group 中插入資料,像: INSERT INTO pg_group VALUES ('todos');CREATE USER miriam IN GROUP todos; 參考 REVOKE 語句重新分配存取權限. 用法 給所有使用者向表 films 插入記錄的許可權: GRANTINSERT ON films TO PUBLIC; 賦予使用者 manuel 操作視圖 kinds 的所有許可權: GRANTALL ON kinds TO manuel; 相容性 SQL92 SQL92GRANT文法允許對錶中的某單獨列/欄位設定許可權,並且允許設定一許可權以賦予別人相同許可權. GRANTprivilege [, ...] ON object [ ( column [, ...] ) ] [, ...] TO { PUBLIC | username [, ...] } [ WITHGRANTOPTION ] 這些欄位與 Postgres 實現是相容的,除了下面一些例外: privilege SQL92 允許聲明附加的許可權: SELECT REFERENCES 允許在一個聲明的表的整合約束中使用某些或全部列/欄位. USAGE 允許使用一個域,字元集,集合或事務.如果聲明的對象不是表/視圖, privilege 只能聲明為 USAGE. object [ TABLE ] table SQL92 允許一個附加的非函數關鍵字 TABLE. CHARACTER SET 允許使用聲明的字元集. COLLATION 允許使用聲明的集合序列. TRANSLATION 允許使用聲明的字元集轉換. DOMAIN 允許使用聲明的域. WITHGRANTOPTION 允許向別人賦予同樣許可權 REVOKENameREVOKE -- 刪除存取權限. SynopsisREVOKE { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ]object[, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONfuncname([type, ...]) [, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]REVOKE { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGElangname[, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]描述REVOKE允許一個對象的建立者撤銷以前 賦予(別人)的許可權,可以是撤銷一個或多個使用者或者一組使用者的許可權. 關鍵字PUBLIC代表隱含定義的擁有所有使用者的組. 請注意,任何特定的使用者都將擁有直接賦予他/她的許可權,加上 他/她所處的任何組,以及再加上賦予PUBLIC的許可權的總和.因此,舉例來說,廢止PUBLIC的 SELECT 許可權並不意味著所有使用者都失去了對該對象的 SELECT 許可權∶ 那些直接得到許可權賦予的以及通過一個組得到許可權的人仍然擁有該許可權. 參閱 GRANT 命令的描述擷取權限類別型的 含義. 注意使用psql的/z命令 顯示在一個現存對象上賦予的許可權.又見 GRANT 擷取關于格式的資訊. 例子撤銷公眾在表films上的插入許可權∶ REVOKE INSERT ON films FROM PUBLIC; 廢除使用者manuel對視圖kinds的所有許可權∶ REVOKE ALL PRIVILEGES ON kinds FROM manuel |
我以scott/tiger登入以後建立了表以後插入資料提示我插入成功了,但是在查詢資料的時候是沒有記錄的,原因是我的scott使用者沒有對這個表插入的許可權。這時要以system登入以後用grant賦予scottr 中某個表的相應的許可權。
GRANT
名稱
GRANT— 賦予一個使用者,一個組或所有使用者存取權限
GRANTprivilege [, ...] ON object [, ...] TO { PUBLIC | GROUP group | username }
輸入
privilege
可能的許可權有:
SELECT
訪問聲明的表/視圖的所有列/欄位.
INSERT
向聲明的表中插入所有欄欄位.
UPDATE
更新聲明的所有列/欄位.
DELETE
從聲明的表中刪除所有行.
RULE
在表/視圖上定義規則 (參見 CREATE RULE 語句).
ALL
賦予所有許可權.
object
賦予許可權的對象名.可能的對象是:
table (表)
view (視圖)
sequence (序列)
index (索引)
PUBLIC
代表是所有使用者的簡寫.
GROUP group
將要賦予許可權的組 group .目前的版本中,組必須是用下面方法顯式建立的.
username
將要賦予許可權的使用者名稱.PUBLIC 是代表所有使用者的簡寫.
輸出
CHANGE
如果成功,返回此資訊.
ERROR: ChangeAcl: class "object" not found
如果所聲明的對象不可用或不可能對聲明的組或使用者賦予許可權.
描述
GRANT允許對象的建立者給某使用者或某組或所有使用者(PUBLIC)某些特定的許可權.對象建立後,除了建立者外,除非建立者賦予(GRANT)許可權,其他人沒有訪問對象的許可權.
一旦使用者有某對象的許可權,他就可以使用那個特權.不需要給建立者賦予(GRANT)對象的許可權,建立者自動擁有對象的所有許可權,包括刪除它的許可權.
注意
目前,要想在 Postgres 裡面只賦予幾列許可權,你必須建立一個包含那幾列的視圖(view),然後把許可權賦予那幾個視圖。
使用 psql /z 命令擷取關於現存對象許可權的更多資訊:
Database = lusitania +------------------+---------------------------------------------+ | Relation | GRANT/Revoke Permissions | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","group todos=rw"} | +------------------+---------------------------------------------+ Legend: uname=arwR -- privileges granted to a user group gname=arwR -- privileges granted to a GROUP =arwR -- privileges granted to PUBLIC r -- SELECT w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL
小技巧: 目前,要建立一個 GROUP (組), 你將不得不手工向表 pg_group 中插入資料,像:
INSERT INTO pg_group VALUES ('todos');CREATE USER miriam IN GROUP todos;
參考 REVOKE 語句重新分配存取權限.
用法
給所有使用者向表 films 插入記錄的許可權:
GRANTINSERT ON films TO PUBLIC;
賦予使用者 manuel 操作視圖 kinds 的所有許可權:
GRANTALL ON kinds TO manuel;
相容性
SQL92
SQL92GRANT文法允許對錶中的某單獨列/欄位設定許可權,並且允許設定一許可權以賦予別人相同許可權.
GRANTprivilege [, ...] ON object [ ( column [, ...] ) ] [, ...] TO { PUBLIC | username [, ...] } [ WITHGRANTOPTION ]
這些欄位與 Postgres 實現是相容的,除了下面一些例外:
privilege
SQL92 允許聲明附加的許可權:
SELECT
REFERENCES
允許在一個聲明的表的整合約束中使用某些或全部列/欄位.
USAGE
允許使用一個域,字元集,集合或事務.如果聲明的對象不是表/視圖, privilege 只能聲明為 USAGE.
object
[ TABLE ] table
SQL92 允許一個附加的非函數關鍵字 TABLE.
CHARACTER SET
允許使用聲明的字元集.
COLLATION
允許使用聲明的集合序列.
TRANSLATION
允許使用聲明的字元集轉換.
DOMAIN
允許使用聲明的域.
WITHGRANTOPTION
允許向別人賦予同樣許可權
REVOKEName
REVOKE -- 刪除存取權限.
Synopsis
REVOKE { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER } [,...] | ALL [ PRIVILEGES ] } ON [ TABLE ]object[, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONfuncname([type, ...]) [, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]REVOKE { USAGE | ALL [ PRIVILEGES ] } ON LANGUAGElangname[, ...] FROM {username| GROUPgroupname| PUBLIC } [, ...]描述
REVOKE允許一個對象的建立者撤銷以前 賦予(別人)的許可權,可以是撤銷一個或多個使用者或者一組使用者的許可權. 關鍵字PUBLIC代表隱含定義的擁有所有使用者的組.
請注意,任何特定的使用者都將擁有直接賦予他/她的許可權,加上 他/她所處的任何組,以及再加上賦予PUBLIC的許可權的總和.因此,舉例來說,廢止PUBLIC的 SELECT 許可權並不意味著所有使用者都失去了對該對象的 SELECT 許可權∶ 那些直接得到許可權賦予的以及通過一個組得到許可權的人仍然擁有該許可權.
參閱 GRANT 命令的描述擷取權限類別型的 含義.
注意
使用psql的/z命令 顯示在一個現存對象上賦予的許可權.又見 GRANT 擷取關于格式的資訊.
例子
撤銷公眾在表films上的插入許可權∶
REVOKE INSERT ON films FROM PUBLIC;
廢除使用者manuel對視圖kinds的所有許可權∶
REVOKE ALL PRIVILEGES ON kinds FROM manuel