gpt4 book ai didi

postgresql - Amazon RDS 上 pg_terminate_backend 的权限

转载 作者:行者123 更新时间:2023-11-29 11:35:19 25 4
gpt4 key购买 nike

我在 Amazon RDS 上的 PostgreSQL 数据库上有一个用户 abc。据我所知,该用户是 super 用户:

=> grant rds_superuser to abc;
NOTICE: role "abc" is already a member of role "rds_superuser" GRANT ROLE

我试图终止一些交易,但我得到:

=> select pg_terminate_backend(pid) from pg_stat_activity;
ERROR: must be superuser or have the same role to terminate other server processes

我广泛地搜索了 Amazon RDS 文档,但我仍然不明白。我哪里出错了?

最佳答案

亚马逊为其数据库管理员角色选择了一个令人困惑的名称。实际上,就 PostgreSQL 而言,它不是 super 用户,您可以通过以下方式验证:

SHOW is_superuser;

实际的 PostgreSQL super 用户访问级别在 RDS 中不可用,因为它可以让您通过加载自己的代码、直接修改文件等方式“突破”数据库系统。

因此,除非 Amazon 为其提供 SECURITY DEFINER 包装函数,或者公开 AWS API 调用让您间接调用该功能,否则您不能在 RDS 中使用仅限 super 用户的函数。

但是,在这种情况下,您只阅读了错误消息的一半:

ERROR: must be superuser or have the same role to terminate other server processes

您的 SQL 尝试终止与数据库的每个 连接,因为它没有WHERE 子句。其中一些连接必须具有不同的用户角色,但您不是 super 用户,因此您不能这样做。

不过,您仍然可以使用自己的用户名终止连接。

关于postgresql - Amazon RDS 上 pg_terminate_backend 的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713375/

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