Postgresql
postgres 9.1:角色 public 不存在
我理解
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。