Postgres 9.3 - 在新功能上使用新角色时,模式错误被拒绝

时间:2016-04-12 11:14:54

标签: postgresql

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

函数已选择并插入公共模式中的某些表。(Db和模式已存在)

- 我使用以下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

1 个答案:

答案 0 :(得分:0)

postgresql 9.1 - access tables through functions

我不知道必须公开撤销公众的所有内容:从上面链接开始的步骤。

全部撤消SCHEMA public FROM public;

现在明白了。

由于