淺析PG數據庫如何授權/撤銷用戶權限


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

  為了給用戶分配權限,使用 GRANT 命令。

一、授權語法

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

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

  • object: 名稱對象授予訪問權限。可能的對象是:表,視圖,序列

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

  • GROUP group: 組授予權限。

  • 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 簡短形式,代表所有用戶.

  • GROUP group: 組授予權限。

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

2、實例

// 讓我們撤銷權限,從USER中的“MANISHA”如下:
testdb=# REVOKE ALL ON COMPANY FROM manisha; REVOKE // REVOKE消息表明,所有的權限被撤銷的USER。 // 甚至可以刪除用戶如下:
testdb=# DROP USER manisha; DROP ROLE // 消息DROP ROLE表示用戶MANISHA已從數據庫中刪除。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM