1. 程式人生 > 其它 >淺析PG資料庫如何授權/撤銷使用者許可權

淺析PG資料庫如何授權/撤銷使用者許可權

  每當在資料庫中建立一個物件,所有者可以分配它訪問許可權。所有者通常是執行建立語句的使用者。對於大多數型別的物件,初始狀態是:只有所有者(或超級使用者)可以修改或刪除物件。為了讓其他角色或使用者使用它,特權或許可權必須是理所當然。

  為了給使用者分配許可權,使用 GRANT 命令。

一、授權語法

1、GRANT命令的基本語法如下:

GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
  • privilege可能的值有: SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object: 名稱物件授予訪問許可權。可能的物件是:表,檢視,序列

  • PUBLIC A 縮寫形式,代表所有使用者。

  • GROUPgroup:組授予許可權。

  • username: 授予許可權的使用者的名稱. PUBLIC 是一個簡短的形式,代表所有使用者。

2、例項

  要了解許可權,讓我們先建立一個USER如下:

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

  訊息CREATE ROLE表明USER“manisha”建立成功。考慮有如下記錄

  接下來,讓我們把表 COMPANY 所有許可權授予使用者“manisha”如下

testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT

  GRANT訊息表明,所有的許可權被分配給USER。

  再比如我們腳本里用到的:把 edu 的所有許可權授予使用者 root

GRANT ALL PRIVILEGES ON DATABASE edu to root;

二、許可權可以使用 REVOKE 命令撤銷

1、REVOKE命令的基本語法如下:

REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
  • privilege

    可能的值有:SELECT, INSERT, UPDATE, DELETE, RULE, ALL.

  • object: 名稱物件授予訪問許可權。可能的物件是:表,檢視,序列

  • PUBLIC 簡短形式,代表所有使用者.

  • GROUPgroup: 組授予許可權。

  • username: 授予許可權的使用者的名稱. PUBLIC是一個簡短的形式,代表所有使用者。

2、例項

// 讓我們撤銷許可權,從USER中的“MANISHA”如下:
testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE
// REVOKE訊息表明,所有的許可權被撤銷的USER。

// 甚至可以刪除使用者如下:
testdb=# DROP USER manisha;
DROP ROLE
// 訊息DROP ROLE表示使用者MANISHA已從資料庫中刪除。