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