Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何向用户授予当前模式和将来创建的模式的权限?_Postgresql_Permissions - Fatal编程技术网

Postgresql 如何向用户授予当前模式和将来创建的模式的权限?

Postgresql 如何向用户授予当前模式和将来创建的模式的权限?,postgresql,permissions,Postgresql,Permissions,我有一个Postgres数据库和一个只读用户,我想向其授予权限。我目前有两个模式,但预计将来会有更多。如何向只读用户授予select权限,以便他们可以从当前创建的表以及将来将在新架构中创建的表中读取数据 我不想在创建每个新架构时显式地授予它们权限。在不指定任何架构的情况下使用: 可以全局设置权限,即为当前数据库中创建的所有对象设置权限[…] 如果省略IN SCHEMA,则会更改全局默认权限 因此,这应该做到: ALTER DEFAULT PRIVILEGES FOR whoever_will_c

我有一个Postgres数据库和一个只读用户,我想向其授予权限。我目前有两个模式,但预计将来会有更多。如何向只读用户授予select权限,以便他们可以从当前创建的表以及将来将在新架构中创建的表中读取数据

我不想在创建每个新架构时显式地授予它们权限。

在不指定任何架构的情况下使用:

可以全局设置权限,即为当前数据库中创建的所有对象设置权限[…] 如果省略IN SCHEMA,则会更改全局默认权限

因此,这应该做到:

ALTER DEFAULT PRIVILEGES FOR whoever_will_create_the_tables
  GRANT SELECT ON TABLES TO the_readonly_user;
ALTER DEFAULT PRIVILEGES FOR whoever_will_create_the_schemas
  GRANT USAGE ON SCHEMAS TO the_readonly_user;
已创建表的权限需要单独的语句:

GRANT SELECT ON ALL TABLES IN SCHEMA schema_1, schema_2 TO the_readonly_user;

即使这样做了,我仍然会收到一个错误:错误:schemaAh的权限被拒绝,我想这也需要对架构进行授权使用。经过进一步研究,似乎没有架构的默认权限。@cdc1996似乎从Postgres 10开始就支持架构的默认权限,但以前不支持。