PostgreSQL - 許可權



在資料庫中建立任何物件時,都會為其分配一個所有者。所有者通常是執行建立語句的人。對於大多數型別的物件,初始狀態是隻有所有者(或超級使用者)才能修改或刪除該物件。要允許其他角色或使用者使用它,必須授予許可權或許可。

PostgreSQL 中的不同許可權型別為:

  • SELECT(選擇),
  • INSERT(插入),
  • UPDATE(更新),
  • DELETE(刪除),
  • TRUNCATE(截斷),
  • REFERENCES(引用),
  • TRIGGER(觸發器),
  • CREATE(建立),
  • CONNECT(連線),
  • TEMPORARY(臨時),
  • EXECUTE(執行),以及
  • USAGE(使用)

根據物件的型別(表、函式等),許可權將應用於該物件。要將許可權分配給使用者,可以使用 GRANT 命令。

GRANT 語法

GRANT 命令的基本語法如下:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • 許可權 - 值可以是:SELECT、INSERT、UPDATE、DELETE、RULE、ALL。

  • 物件 - 要授予訪問許可權的物件的名稱。可能的物件包括:表、檢視、序列

  • PUBLIC - 表示所有使用者的簡寫形式。

  • GROUP - 要授予許可權的組。

  • 使用者名稱 - 要授予許可權的使用者名稱稱。PUBLIC 是表示所有使用者的簡寫形式。

可以使用 REVOKE 命令撤銷許可權。

REVOKE 語法

REVOKE 命令的基本語法如下:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • 許可權 - 值可以是:SELECT、INSERT、UPDATE、DELETE、RULE、ALL。

  • 物件 - 要授予訪問許可權的物件的名稱。可能的物件包括:表、檢視、序列

  • PUBLIC - 表示所有使用者的簡寫形式。

  • GROUP - 要授予許可權的組。

  • 使用者名稱 - 要授予許可權的使用者名稱稱。PUBLIC 是表示所有使用者的簡寫形式。

示例

為了理解許可權,讓我們首先建立一個使用者,如下所示:

testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE

訊息 CREATE ROLE 指示使用者“manisha”已建立。

考慮表 COMPANY,其記錄如下:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

接下來,讓我們將表 COMPANY 上的所有許可權授予使用者“manisha”,如下所示:

testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT

訊息 GRANT 指示所有許可權已分配給使用者。

接下來,讓我們從使用者“manisha”撤銷許可權,如下所示:

testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

訊息 REVOKE 指示所有許可權已從使用者撤銷。

您還可以如下刪除使用者:

testdb=# DROP USER manisha;
DROP ROLE

訊息 DROP ROLE 指示使用者“Manisha”已從資料庫中刪除。

廣告

© . All rights reserved.