【问题标题】:Postgres 9.3 - permission denied for schema error with New role on new functionPostgres 9.3 - 在新功能上使用新角色的架构错误的权限被拒绝
【发布时间】:2025-12-17 22:50:01
【问题描述】:

在退出数据库和现有架构时,我创建了一个新函数。我应该创建一个新角色,以便执行我创建的新功能。

函数在公共架构中的某些表上具有选择和插入功能。(数据库和架构已经存在)

--我用下面的 SQL 创建了新角色:

BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;

   DO $BODY$
   BEGIN
   CREATE ROLE new_role LOGIN;
   EXCEPTION
       WHEN duplicate_object THEN

   RAISE DEBUG '% (%)', SQLERRM, SQLSTATE;
   END;
   $BODY$;

   ALTER ROLE new_role ENCRYPTED PASSWORD 'abc123';
   COMMIT;

--以下是 GRANT 查询:

  GRANT CONNECT ON DATABASE "existing_db" TO new_role;
   GRANT ALL PRIVILEGES ON SCHEMA public TO new_role;
   grant all ON FUNCTION new_fun(name text, address text) TO new_role

使用 new_role 连接到数据库并尝试从 new_fun 中进行选择提示我“权限被拒绝公开模式”。

我不确定是否需要在此处授予其他授予权限。请帮忙。

谢谢, -Div

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    postgresql 9.1 - access tables through functions

    我不知道必须从 Public 中撤消所有公开:按照上述链接的步骤。

    REVOKE ALL ON SCHEMA public FROM public;

    现在明白了。

    谢谢

    【讨论】:

      最近更新 更多