Postgresql权限不断失败
我正在Linux上运行PostgreSQL 9.3.2 我有一个组角色“data_scientist”和对特定(已填充)模式的权限,如下所示Postgresql权限不断失败,sql,postgresql,permissions,postgresql-9.3,database-permissions,Sql,Postgresql,Permissions,Postgresql 9.3,Database Permissions,我正在Linux上运行PostgreSQL 9.3.2 我有一个组角色“data_scientist”和对特定(已填充)模式的权限,如下所示 grant usage on schema schemaname to data_scientist; grant select, references, trigger on all tables in schema schemaname to data_scientist; 这解决了使用过去的表进行数据收集的问题。对于以后的表,我添
grant usage on schema schemaname to data_scientist;
grant select, references, trigger
on all tables in schema schemaname
to data_scientist;
这解决了使用过去的表进行数据收集的问题。对于以后的表,我添加了
alter default privileges in schema schemaname
grant select, references on tables
to data_scientist;
但是,每当添加新表时,其他数据科学家对新表的权限都会失败 默认情况下,ALTER default权限仅适用于运行该命令的角色。假设我们有两个用户:ramfjord和animalito。如果我(拉姆峡湾)跑 然后animalito就能看到它了。如果animalito运行
CREATE TABLE animalito_table
然后拉姆峡湾将无法看到它,因为拉姆峡湾的默认权限不适用。使用\ddp
正因为如此,我们已经停止在我的公司使用默认权限,并开始使用显式授权。要删除默认priv,必须运行
ALTER DEFAULT PRIVILEGES FOR ROLE <owner> REVOKE...
更改角色撤销的默认权限。。。
所有者、架构、关系类型和权限必须与
\ddp
中列出的匹配,此命令才能执行任何操作不要只需从存储默认权限的内部表中删除所有内容。。。相信我。似乎通过指定默认权限来回答这个问题,以指定对在schemaIn事实中创建的新对象的访问权限,这是我添加的第二部分。尽管如此,它仍然不起作用。@mc110记住FOR也很重要,因为默认权限是每个用户/角色的,并且它默认为发出语句的当前用户。@mlt我不确定我是否理解FOR的意思,您能举例说明吗?如果您在发出alter语句时连接到DB时没有角色数据科学家,然后您必须使用for data_scientist角色,否则默认权限将应用于仅由您用来发出alter语句的用户创建的新表。也可能是相关的。也就是说,如果在创建表之前将数据作为组角色,请确保使用了set role
。我相信这个Q是我链接的那个Q的复制品。
ALTER DEFAULT PRIVILEGES FOR ROLE <owner> REVOKE...