gpt4 book ai didi

postgresql - 如何在不授予额外权限的情况下允许用户在 Postgresql 中调用存储过程?

转载 作者:行者123 更新时间:2023-12-04 14:19:55 24 4
gpt4 key购买 nike

我在 Postgresql 中有一个包含 COMMIT 语句的存储过程,我希望用户只访问这个过程而不授予他们选择、插入等的权利。在函数中,我将使用 SECURITY DEFINER,但来自官方文档 https://www.postgresql.org/docs/11/sql-createprocedure.html :

A SECURITY DEFINER procedure cannot execute transaction control statements (for example, COMMIT and ROLLBACK, depending on the language).



据我了解,这意味着我不能使用 SECURITY DEFINER 并且必须授予用户存储过程中所需的任何权限以允许用户执行它,这完全违背了仅允许用户使用功能或过程的整个目的。

如何在没有对过程中的所有语句进行单独授权的情况下调用包含 COMMIT 语句的存储过程?

最佳答案

您可以授予特定过程的权限,以便用户只能拥有该过程的事务控制权限。

GRANT ALL ON PROCEDURE <procedure_name> TO <role>;

关于postgresql - 如何在不授予额外权限的情况下允许用户在 Postgresql 中调用存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56168299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com