PostgreSQL許可權

在資料庫中創建對象時,都會為其分配所有者。 所有者通常是執行創建語句的用戶。 對於大多數類型的對象,初始狀態是只有所有者(或超級用戶)可以修改或刪除對象。 要允許其他角色或用戶使用它,必須授予許可權或許可權。

PostgreSQL中的不同類型的許可權是:

  • SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTEUSAGE

根據對象的類型(表,函數等),許可權將應用於對象。 要為用戶分配權限,使用GRANT命令。

GRANT的語法

GRANT命令的基本語法如下:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • privilege值可以是:SELECTINSERTUPDATEDELETERULEALL
  • object:要向其授予訪問許可權的對象的名稱。 可能的對象是:表,視圖,序列
  • PUBLIC:表示所有用戶的簡短形式。
  • GROUP group:授予許可權的組。
  • username:授予許可權的用戶的名稱。 PUBLIC是表示所有用戶的簡短形式。

REVOKE的語法

REVOKE命令的基本語法如下:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • privilege值可以是:SELECTINSERTUPDATEDELETERULEALL
  • object: 授予訪問許可權的對象的名稱。 可能的對象是:表,視圖,序列。
  • PUBLIC:表示所有用戶的簡短形式。
  • GROUP group:授予許可權的組。
  • username:授予許可權的用戶的名稱。 PUBLIC是表示所有用戶的簡短形式。

示例

如要理解許可權,我們先創建一個USER,如下所示:

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

語句CREATE ROLE 表示創建了一個用戶名為manisha

考慮 COMPANY 表有以下記錄:

zaixian_db# 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)

接下來,讓我們給予用戶“manisha”在表COMPANY上授予所有權限,如下所示:

zaixian_db=# GRANT ALL ON COMPANY TO manisha;
GRANT

語句GRANT指示所有在COMPANY表上的許可權都分配給用戶“manisha”。

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

zaixian_db=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE

REVOKE表示從用戶“manisha”撤銷所有權限。甚至可以刪除用戶,如下所示:

zaixian_db=# DROP USER manisha;
DROP ROLE

DROP ROLE表示從資料庫中刪除用戶“manisha”。


上一篇: PostgreSQL自動遞增 下一篇: C/C++連接PostgreSQL資料庫