NAME
GRANT - 定 義 訪 問 權 限
SYNOPSIS
GRANT { {
SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES |
TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tablename [, ...]
TO { username | GROUP groupname | PUBLIC } [,
...] [ WITH GRANT OPTION ]
GRANT { {
CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE dbname [, ...]
TO { username | GROUP groupname | PUBLIC } [,
...] [ WITH GRANT OPTION ]
GRANT { EXECUTE
| ALL [ PRIVILEGES ] }
ON FUNCTION funcname ([type, ...]) [, ...]
TO { username | GROUP groupname | PUBLIC } [,
...] [ WITH GRANT OPTION ]
GRANT { USAGE |
ALL [ PRIVILEGES ] }
ON LANGUAGE langname [, ...]
TO { username | GROUP groupname | PUBLIC } [,
...] [ WITH GRANT OPTION ]
GRANT { {
CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
ON SCHEMA schemaname [, ...]
TO { username | GROUP groupname | PUBLIC } [,
...] [ WITH GRANT OPTION ]
DESCRIPTION 描 述
GRANT 命 令 將 某 對 象 ( 表 , 視 圖 , 序 列 , 函 數 過 程 語 言 , 或 者 模 式 ) 上 的 特 定 權 限 給 予 一 個 用 戶 或 者 多 個 用 戶 或 者 一 組 用 戶 。 這 些 權 限 將 增 加 到 那 些 已 經 賦 予 的 權 限 上 , 如 果 存 在 這 些 權 限 的 話 。 鍵 字 PUBLIC 表 示 該 權 限 要 賦 予 所 有 用 戶 , 包 括 那 些 以 後 可 能 創 建 的 用 戶 。 PUBLIC 可 以 看 做 是 一 個 隱 含 定 義 好 的 組 , 它 總 是 包 括 所 有 用 戶 。 任 何 特 定 的 用 戶 都 將 擁 有 直 接 賦 予 他 /她 的 權 限 , 加 上 他 /她 所 處 的 任 何 組 , 以 及 再 加 上 賦 予 PUBLIC 的 權 限 的 總 和 。 如 果 聲 明 瞭 WITH GRANT OPTION, 那 麼 權 限 的 受 予 者 也 可 以 賦 予 別 人 。 缺 省 的 時 候 這 是 不 允 許 的 。 賦 權 選 項 只 能 給 獨 立 的 用 戶 , 而 不 能 給 組 或 者 PUBLIC。 對 對 象 的 所 有 者 ( 通 常 就 是 創 建 者 ) 而 言 , 沒 有 什 麼 權 限 需 要 賦 予 , 因 爲 所 有 者 缺 省 就 持 有 所 有 權 限 。 ( 不 過 , 所 有 者 出 於 安 全 考 慮 可 以 選 擇 廢 棄 一 些 他 自 己 的 權 限 。 ) 刪 除 一 個 對 象 的 權 力 , 或 者 是 任 意 修 改 它 的 權 力 都 不 是 可 賦 予 的 權 利 所 能 描 述 的 ; 它 是 創 建 者 固 有 的 , 並 且 不 能 賦 予 或 撤 銷 。 根 據 對 象 的 不 同 , 初 始 的 缺 省 權 限 可 能 包 括 給 PUBLIC 賦 予 一 些 權 限 。 缺 省 設 置 對 於 表 和 模 式 是 沒 有 公 開 訪 問 權 限 的 ; TEMP 表 爲 數 據 庫 創 建 權 限 ; EXECUTE 權 限 用 於 函 數 ; 以 及 USAGE 用 於 語 言 。 對 象 所 有 者 當 然 可 以 撤 回 這 些 權 限 。 ( 出 於 最 大 安 全 性 考 慮 , 在 創 建 該 對 象 的 同 一 個 事 務 中 發 出 REVOKE; 那 麼 就 不 會 打 開 給 別 的 用 戶 使 用 該 對 象 的 窗 口 。 ) 可 能 的 權 限 有 :
SELECT 允 許 對 聲 明 的 表 , 試 圖 , 或 者 序 列 |
SELECT [select(7)] 任 意 字 段 。 還 |
允 許 做 COPY [copy(7)] TO 的 源 。 對 於 序 列 而 言 , 這 個 權 限 還 允 許 使 用 currval 函 數 。
INSERT 允 許 向 聲 明 的 表 |
INSERT [insert(7)] 一 個 新 行 。 同 時 還 允 許 做 COPY |
[copy(7)] FROM。
UPDATE 允 許 對 聲 明 的 表 中 任 意 字 段 做 |
UPDATE [update(7)] 。 SELECT ... FOR |
UPDATE 也 要 求 這 個 權 限 ( 除 了 SELECT 權 限 之 外 ) 。 比 如 , 這 個 權 限 允 許 使 用 nextval 和 setval。
DELETE 允 許 從 聲 明 的 表 中 |
DELETE [delete(7)] 行 。 |
|||
RULE 允 許 在 該 表 |
/視 圖 上
創 建 規 則 。 (
參 閱 CREATE RULE [create_rule(7)]
語 句 。 )
REFERENCES 要 創 建 一 個
外 鍵 約 束 , 你
必 須 在 參 考 表
和 被 參 考 表 上
都 擁 有 這 個 權
限 。
TRIGGER 允 許 在 聲 明
表 上 創 建 觸 發
器 。 ( 參 閱 CREATE TRIGGER
[create_trigger(7)] 語 句 。
)
CREATE 對 於 數 據 庫 , 允 許 在 該 數 據 庫 裏 創 建 新 的 模 式 。 對 於 模 式 , 允 許 在 該 模 式 中 創 建 新 的 對 象 。 要 重 命 名 一 個 現 有 對 象 , 你 必 需 擁 有 該 對 象 並 且 。 對 包 含 該 對 象 的 模 式 擁 有 這 個 權 限 。 |
TEMPORARY
TEMP 允 許 在 使 用 該 數 據 庫 的 時 候 創 建 臨 時 表 。 |
EXECUTE 允 許 使 用 指 定 的 函 數 並 且 可 以 使 用 任 何 利 用 這 些 函 數 實 現 的 操 作 符 。 這 是 適 用 於 函 數 的 唯 一 的 一 種 權 限 類 型 。 ( 該 語 法 同 樣 適 用 於 聚 集 函 數 。 )
USAGE 對 於 過 程 語 言 , 允 許 使 用 指 定 過 程 語 言 創 建 該 語 言 的 函 數 。 這 是 適 用 於 過 程 語 言 的 唯 一 的 一 種 權 限 類 型 。 對 於 模 式 , 允 許 訪 問 包 含 在 指 定 模 式 中 的 對 象 ( 假 設 該 對 象 的 所 有 權 要 求 同 樣 也 設 置 了 ) 。 最 終 這 些 就 允 許 了 權 限 接 受 者 |
"查 詢
"模 式 中 的 對 象
。
ALL PRIVILEGES 一 次 性 給
予 所 有 適 用 於
該 對 象 的 權 限
。 PRIVILEGES 關 鍵 字 在
PostgreSQL 裏 是 可 選 的
, 但 是 嚴 格 的 SQL
要 求 有 這 個 關
鍵 字 。 其 它 命
令 要 求 的 權 限
都 在 相 應 的 命
令 的 參 考 頁 上
列 出 。
NOTES 注 意
REVOKE [revoke(7)] 命 令 用 於 刪 除 訪 問 權 限 。 我 們 要 注 意 數 據 庫 超 級 用 戶 可 以 訪 問 所 有 對 象 , 而 不 會 受 對 象 的 權 限 設 置 影 響 。 這 個 特 點 類 似 Unix 系 統 的 root 的 權 限 。 和 root 一 樣 , 除 了 必 要 的 情 況 , 總 是 以 超 級 用 戶 身 分 進 行 操 作 是 不 明 智 的 做 法 。
If a superuser chooses to issue a GRANT or REVOKE command, the command is performed as though it were issued by the owner of the affected object. In particular, privileges granted via such a command will appear to have been granted by the object owner. 目 前 , 要 在 PostgreSQL 裏 只 對 某 幾 列 賦 予 權 限 , 你 必 須 創 建 一 個 擁 有 那 幾 行 的 視 圖 然 後 給 那 個 視 圖 賦 予 權 限 。 使 用 psql(1) 的 \z 命 令 獲 取 在 現 有 對 象 上 的 與 權 限 有 關 的 信 息 。
=> \z mytable
Access
privileges for database "lusitania"
Schema | Table | Access privileges
--------+---------+---------------------------------------
public | mytable |
{=r/postgres,miriam=arwdRxt/postgres,"group
todos=arw/postgres"}
(1 row)
\z 顯 示 的 條 目 解 釋 如 下 :
=xxxx --
賦 予 PUBLIC 的 權 限
uname=xxxx -- 賦 予 一 個 用
戶 的 權 限
group gname=xxxx -- 賦 予 一 個
組 的 權 限
r -- SELECT
("讀 ")
w -- UPDATE ("寫 ")
a -- INSERT ("追 加 ")
d -- DELETE
R -- RULE
x -- REFERENCES
t -- TRIGGER
X -- EXECUTE
U -- USAGE
C -- CREATE
T -- TEMPORARY
arwdRxt -- ALL PRIVILEGES (for tables)
* -- 給 前 面 權 限 的
授 權 選 項
/yyyy -- 授 出 這 個 權 限 的 用 戶 用 戶 miriam 在 建 完 表 之 後 再 做 下 面 的 語 句 , 就 可 以 得 到 上 面 例 子 的 結 果
GRANT SELECT ON
mytable TO PUBLIC;
GRANT SELECT, UPDATE, INSERT ON mytable TO GROUP todos;
如 果 一 個 給 定
的 對 象 的 "Access
privileges" 字 段 是 空
的 , 這 意 味 着
該 對 象 有 缺 省
權 限 ( 也 就 是
說 , 它 的 權 限
字 段 是 NULL) 。 缺
省 權 限 總 是 包
括 所 有 者 的 所
有 權 限 , 以 及
根 據 對 象 的 不
同 , 可 能 包 含
一 些 給 PUBLIC 的 權 限
。 對 象 上 第 一
個 GRANT 或 者 REVOKE 將 實
例 化 這 個 缺 省
權 限 ( 比 如 ,
產 生 {=,miriam=arwdRxt}) 然
後 根 據 每 次 特
定 的 需 求 修 改
它 。
EXAMPLES 例 子
把 表 films 的 插 入 權 限 賦 予 所 有 用 戶 :
GRANT INSERT ON films TO PUBLIC; 賦 予 用 戶 manuel對 視 圖 kinds的 所 有 權 限 :
GRANT ALL PRIVILEGES ON kinds TO manuel;
COMPATIBILITY 兼 容 性
根 據 SQL 標 準 , 在 ALL PRIVILEGES 裏 的 PRIVILEGES 關 鍵 字 是 必 須 的 。 SQL 不 支 持 在 一 條 命 令 裏 對 多 個 表 設 置 權 限 。
SQL 標 準 允 許 在 一 個 表 裏 爲 獨 立 的 字 段 設 置 權 限 :
GRANT
privileges
ON table [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION
]
SQL 標 準 對 其 它 類 型 的 對 象 提 供 了 一 個 USAGE 權 限 : 字 符 集 , 校 勘 , 轉 換 , 域 。
RULE 權 限 , 以 及 在 數 據 庫 , 模 式 , 語 言 和 序 列 上 的 權 限 是 PostgreSQL 擴 展 。
SEE ALSO 參 見
REVOKE [revoke(7)]
譯 者
Postgresql 中 文 網 站 何 偉 平 <laser [AT] pgsqldb.org>
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh