PUBLIC

PUBLIC 角色是自动分配给所有新用户的预定义角色。它始终处于启用状态,并且无法删除或撤销。使用此角色授予所有数据库用户相同的最低权限集。

与所有其他角色一样,可以授予 PUBLIC 角色对单个对象和其他角色的权限。以下示例授予 PUBLIC 角色对表 publicdata 的 INSERT 和 SELECT 权限。这使所有用户都可以读取该表中的数据并插入新数据:

=> CREATE TABLE publicdata (a INT, b VARCHAR);
CREATE TABLE
=> GRANT INSERT, SELECT ON publicdata TO PUBLIC;
GRANT PRIVILEGE
=> CREATE PROJECTION publicdataproj AS (SELECT * FROM publicdata);
CREATE PROJECTION
=> \c - bob
You are now connected as user "bob".
=> INSERT INTO publicdata VALUES (10, 'Hello World');
OUTPUT
--------
      1
(1 row)

以下示例向 PUBLIC 授予 employee 角色,以便所有数据库用户都具有 employee 权限:

=> GRANT employee TO public;
GRANT ROLE