【发布时间】: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