postgresql 授予设置session_replication_role的权限

x33g5p2x  于 2023-02-12  发布在  PostgreSQL
关注(0)|答案(2)|浏览(471)

脚本必须将SQL数据导入PostgreSQL数据库。SQL包括以下两行代码:

SET session_replication_role = 'replica';
...
SET session_replication_role = 'origin';

开始导入的用户xyz还没有权限执行此操作,将显示错误PG::InsufficientPrivilege
用户postgres如何(使用哪个SQL查询)授予用户xyz设置session_replication_role的权限?我找不到任何相关文档。

dauxcl2d

dauxcl2d1#

从PostgreSQL 15+开始,有一种方法可以做到这一点:

GRANT SET ON PARAMETER session_replication_role TO xyz;

https://www.postgresql.org/docs/15/sql-grant.html
我还没有尝试过,但我敢打赌它运行良好-在版本14中,我在一个plpgsql过程的末尾使用了SECURITY DEFINER,其中包含“SET session_replication_role”语句,并确保超级用户帐户是该过程的定义者/所有者-然后,任何具有EXECUTE权限的用户仍然可以运行它,参数设置也如您所希望的那样工作。

jm81lzqq

jm81lzqq2#

这是不可能的:-(.见:
这似乎是目前只有超级用户权限才可能:设置此变量需要超级用户权限,请参阅postgresql.org/docs/current/runtime-config-client.html

相关问题