在 PostgreSQL 10 中 - 当使用“所有者用户”(拥有模式和所有表的登录角色,应用程序在运行时不使用)和“运行时”用户时,我可以GRANT
选择/更新/删除模式中所有现有表的权限给运行时用户:
GRANT SELECT ON ALL TABLES IN SCHEMA owner TO runtime;
但这仅适用于现有对象,不适用于稍后可能创建的新表。
有没有办法通过继承角色或模式权限或类似方式来避免授予所有新对象?
在 PostgreSQL 10 中 - 当使用“所有者用户”(拥有模式和所有表的登录角色,应用程序在运行时不使用)和“运行时”用户时,我可以GRANT
选择/更新/删除模式中所有现有表的权限给运行时用户:
GRANT SELECT ON ALL TABLES IN SCHEMA owner TO runtime;
但这仅适用于现有对象,不适用于稍后可能创建的新表。
有没有办法通过继承角色或模式权限或类似方式来避免授予所有新对象?
是的。关键词是
DEFAULT PRIVILEGES
。将指定角色在未来创建的所有指定对象的指定权限授予其他指定角色。
我明确指定了target_role (
owner_user
) 以避免歧义。否则,引用手册:有关的:
如果您有任何
serial
列,请不要忘记访问序列。第一个链接的答案有说明。