Postgresql

postgres 9.1:角色 public 不存在

  • July 5, 2017

我理解public不是postgres中的典型角色:

dav-gis=# \duS public List of roles Role name | Attributes | Member of -----------+------------+-----------

但是為什麼我可以從 撤消架構上的所有權限public,但不能將另一個角色分配給public?例如,

db=# REVOKE ALL PRIVILEGES ON SCHEMA "eia" FROM "public";
REVOKE
db=# GRANT "eia-ro" TO "public";
ERROR:  role "public" does not exist

我只想通過只讀角色授予公共使用者讀取訪問權限,但這可能與 Postgres 中公共訪問的工作方式不同步。

正如@Evan Carroll 所說,沒有“公共”角色。手冊中有這樣說:

關鍵字 PUBLIC 表示權限將授予所有角色,包括以後可能創建的角色。PUBLIC 可以被認為是一個隱含定義的組,它始終包含所有角色。任何特定角色都將擁有直接授予它的權限、授予其目前成員的任何角色的權限以及授予 PUBLIC 的權限的總和。

與具有特權的情況不同,角色的成員資格不能授予 PUBLIC。

引用自:https://dba.stackexchange.com/questions/178088