Postgresql 简明教程
PostgreSQL - PRIVILEGES
每当在数据库中创建对象时,都会指定一个所有者。所有者通常是执行创建语句的人员。对于大部分类型对象,初始状态是只有所有者(หรือ超级用户)可以修改或删除对象。若要允许其他角色或用户使用它,则必须授予权限或用户权限。
PostgreSQL 中不同类型的权限:
-
SELECT,
-
INSERT,
-
UPDATE,
-
DELETE,
-
TRUNCATE,
-
REFERENCES,
-
TRIGGER,
-
CREATE,
-
CONNECT,
-
TEMPORARY,
-
EXECUTE, and
-
USAGE
权限根据对象类型(表、函数等等)应用至对象。授予用户权限时,使用 GRANT 命令。
Syntax for GRANT
GRANT 命令的基本语法如下:
GRANT privilege [, ...]
ON object [, ...]
TO { PUBLIC | GROUP group | username }
-
privilege - 值可以是:SELECT、INSERT、UPDATE、DELETE、RULE、ALL。
-
object - 授予访问权的对象名称。可能包括的对象有:表、视图、序列
-
PUBLIC - 代表所有用户的简称。
-
GROUP group - 要授予权限的角色。
-
username - 要授予权限的用户的名称。PUBLIC 是代表所有用户的简称。
可以使用 REVOKE 命令撤销权限。
Syntax for REVOKE
REVOKE 命令的基本语法如下:
REVOKE privilege [, ...]
ON object [, ...]
FROM { PUBLIC | GROUP groupname | username }
-
privilege - 值可以是:SELECT、INSERT、UPDATE、DELETE、RULE、ALL。
-
object - 授予访问权的对象名称。可能包括的对象有:表、视图、序列
-
PUBLIC - 代表所有用户的简称。
-
GROUP group - 要授予权限的角色。
-
username - 要授予权限的用户的名称。PUBLIC 是代表所有用户的简称。
Example
为了理解这些权限,我们首先创建一个 USER 如下 −
testdb=# CREATE USER manisha WITH PASSWORD 'password';
CREATE ROLE
消息 CREATE ROLE 指示创建 USER“manisha”。
考虑 COMPANY 表具有以下记录:
testdb# 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 的所有权限,如下所示 −
testdb=# GRANT ALL ON COMPANY TO manisha;
GRANT
消息 GRANT 指示已向 USER 分配所有权限。
接下来,让我们注销 USER“manisha”的权限,如下所示 −
testdb=# REVOKE ALL ON COMPANY FROM manisha;
REVOKE
消息 REVOKE 指示已从 USER 中撤销所有权限。
您甚至可以删除用户,如下所示 −
testdb=# DROP USER manisha;
DROP ROLE
消息 DROP ROLE 指示已从数据库中删除 USER “Manisha”。