我在AWS RDS上运行了版本10的Postgres实例。我在那里有一个用户,它被授予了默认角色。我希望在沙箱上创建同一个用户,其中实例的版本为9.4。因此,我想知道版本10的默认角色中包含了哪些授权。
发布于 2019-07-18 18:21:00
看看https://www.postgresql.org/docs/current/infoschema-role-table-grants.html
视图role_table_grants标识在授予者或受让人是当前启用角色的表或视图上授予的所有特权。进一步的信息可以在table_privileges下找到。此视图与table_privileges之间唯一有效的区别是,该视图省略了通过授予公共权限使当前用户可以访问的表。
发布于 2021-06-07 07:10:42
这些角色大多是硬编码的。例如,在pg_stat_get_activity
源代码中(在pg_stat_activity
视图中使用)- HAS_PGSTAT_PERMISSIONS
宏定义为:
(is_member_of_role(GetUserId(), DEFAULT_ROLE_READ_ALL_STATS) || has_privs_of_role(GetUserId(), role))
这是使用硬编码的角色名进行的直接成员资格检查。作用的目的是给予这种可能性,而不是引入某种新的赠款类型。在10之前的版本中,只检查超级用户权限或与用户ID:https://github.com/postgres/postgres/blob/REL9_4._STABLE/src/backend/utils/adt/pgstatfuncs.c#L678完全匹配的权限。
if (superuser() || beentry->st_userid == GetUserId())
因此,不可能授予这样的特权。
我希望在我的沙箱中创建同一个用户,其中实例的版本为9.4
请注意,RDS是一个封闭的源叉。众所周知,RDS对代码进行了自己的更改,包括在权利体系中。因此,您将无法从RDS之外复制RDS。
https://dba.stackexchange.com/questions/243164
复制相似问题