淺析PG資料庫如何授權/撤銷使用者許可權
阿新 • • 發佈:2021-08-04
每當在資料庫中建立一個物件,所有者可以分配它訪問許可權。所有者通常是執行建立語句的使用者。對於大多數型別的物件,初始狀態是:只有所有者(或超級使用者)可以修改或刪除物件。為了讓其他角色或使用者使用它,特權或許可權必須是理所當然。
為了給使用者分配許可權,使用 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
-
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已從資料庫中刪除。