Postgresql 授权未成功

问题描述 投票:0回答:1

我正在 postgres 中创建一个函数,该函数已创建但没有应用程序访问的权限。它给了我

警告:没有授予“公众”任何特权

我使用“以管理员身份打开”选项重新启动,这次出现以下错误。

错误:必须是函数的所有者

这是我的功能

-- FUNCTION: traffic.get_user_route_folders_new()

--DROP FUNCTION IF EXISTS traffic.get_user_route_folders_new();

CREATE OR REPLACE FUNCTION traffic.get_user_route_folders_new(
)
RETURNS json
LANGUAGE 'sql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$
SELECT row_to_json(t) 
FROM  (
    SELECT id, name, parent_folder_id
    FROM traffic.here_traffic_route_folders 
) t
$BODY$;

ALTER FUNCTION traffic.get_user_route_folders_new()
OWNER TO bcadmin;

GRANT EXECUTE ON FUNCTION traffic.get_user_route_folders_new() TO PUBLIC;

GRANT EXECUTE ON FUNCTION traffic.get_user_route_folders_new() TO bcadmin;

当我再次尝试删除功能时,我得到了

错误:必须是函数 xyz 的所有者

postgresql pgadmin
1个回答
0
投票

错误消息表明您正在尝试更改函数的所有权或删除它,这些操作仅限于函数所有者。您必须向 PUBLIC 角色授予对该函数的 EXECUTE 权限才能解决问题。尝试使用以下 SQL 语句来实现此目的:

GRANT EXECUTE ON FUNCTION traffic.get_user_route_folders_new() TO PUBLIC;

您必须是该函数的所有者或具有 DROP FUNCTION 访问权限才能删除该函数。因此,如果您不是函数的所有者,请请求函数的所有者授予您 DROP FUNCTION 的能力。

使用以下 SQL 查询删除该函数:

DROP FUNCTION traffic.get_user_route_folders_new();

希望它对你有用:)

© www.soinside.com 2019 - 2024. All rights reserved.