Amazon RDS Postgres - >授予pg_catalog

时间:2017-07-14 05:21:53

标签: postgresql permissions amazon-rds rds

我需要授予主用户(MasterUsername)访问pg_catalog的权限。

GRANT USAGE ON SCHEMA pg_catalog TO <master-user>;

运行此操作时,我收到以下警告: 警告:没有为&#34; pg_catalog&#34;。

授予任何权限

基本上,我有一个自动化脚本,我在其中创建数据库,我设置了搜索路径,并且:

SET search_path = <my-schema>, pg_catalog;
CREATE TYPE <type> AS (
id bigint,
name character varying);

我得到以下错误

Caused by: org.postgresql.util.PSQLException: ERROR: permission denied for schema pg_catalog

基本上,它不允许我创建类型,因为pg_type表存在于pg_catalog中。如何创建类型?

我不知道授予USAGE权利是否会有所帮助?如果还有其他解决方法,请告诉我。

2 个答案:

答案 0 :(得分:1)

授予使用权限只会让您能够访问架构的对象,创建新对象将需要在该架构上创建权限。

答案 1 :(得分:0)

我解决这个问题的方式非常简单,我使用postgres创建了一个角色CREATE ROLE postgres,我将其分配给了我的用户。

添加到SET search_path=public,<database>

搜索路径public和数据库

将此分配给我的用户实际上为我提供了创建自定义pg_type所需的所有权限,在公共模式中使用模式pg_catalog。这有用吗?我不知道,可能是postgres的家伙可以回答这个问题吗?或者AWS RDS的人可以回答这个问题。

其次,我在使用pg_functions和扩展Postgis的功能方面遇到了另一个问题,即使通过将角色postgres角色添加到需要访问该功能的用户来解决它们。

我仍然认为这是一种解决方法,而不是直接修复,或者可能是修复,但应该有一些文档(我没有找到)。