jul*_*icz 6 postgresql permissions rdbms amazon-web-services amazon-rds
我abc
在 Amazon RDS 上的 PostgreSQL 数据库上有一个用户。据我所知,该用户是超级用户:
=> grant rds_superuser to abc;
NOTICE: role "abc" is already a member of role "rds_superuser" GRANT ROLE
Run Code Online (Sandbox Code Playgroud)
我尝试终止一些交易,但是我得到:
=> select pg_terminate_backend(pid) from pg_stat_activity;
ERROR: must be superuser or have the same role to terminate other server processes
Run Code Online (Sandbox Code Playgroud)
我广泛搜索了 Amazon RDS 文档,但仍然不明白。我哪里出错了?
亚马逊为其数据库管理员角色选择了一个令人困惑的名称。事实上,就 PostgreSQL 而言,它不是超级用户,您可以通过以下方式验证:
SHOW is_superuser;
Run Code Online (Sandbox Code Playgroud)
实际的 PostgreSQL 超级用户访问级别在 RDS 中不可用,因为它可以让您通过加载自己的代码、直接修改文件等方式“突破”数据库系统。
因此,您不能在 RDS 中使用仅限超级用户的函数,除非 AmazonSECURITY DEFINER
为其提供包装函数,或者公开 AWS API 调用以让您间接调用该功能。
但是,在这种情况下,您只阅读了一半的错误消息:
错误:必须是超级用户或具有相同角色才能终止其他服务器进程
您的 SQL 尝试终止与数据库的每个连接,因为它没有WHERE
子句。其中一些连接必须具有不同的用户角色,但您不是超级用户,所以您不能这样做。
不过,您仍然可以通过自己的用户名终止连接。
归档时间: |
|
查看次数: |
11360 次 |
最近记录: |