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
重要
对于将PUBLIC
指定为被授予者的任何 GRANT
语句,子句 WITH ADMIN OPTION
都是无效的。