我们在 RDS 上使用 Postgres 9.5,并且有一个用例在运行批量插入时关闭 SQL 日志记录。批量插入 SQL 语句很大,记录它并没有太多好处,因为我们知道它会比我们设置的 log_min_duration 花费更多的时间。
如 this post 中所述,我尝试通过 psql 客户端执行 set_config。不幸的是我被拒绝了。通过 psql 登录的用户是 rds_superuser 的成员。
SELECT current_setting('log_statement');
┌─────────────────┐
│ current_setting │
├─────────────────┤
│ mod │
└─────────────────┘
(1 row)
SELECT set_config('log_statement', 'mod', false);
ERROR: 42501: permission denied to set parameter "log_statement"
LOCATION: set_config_option, guc.c:5804
关于为什么我们被拒绝许可的任何想法,其次人们是否知道是否可以在运行时在 RDS 上的 postgres 中更改此设置
最佳答案
RDS 使用与 vanilla Postgres 不同的权限模型,因此 rds_superuser
角色实际上并不拥有“真实” super 用户所拥有的所有权限。实际上,RDS 是一种“托管”数据库托管解决方案,完全访问权限将使您能够破坏或损害该管理。相反,此角色被授予 a list of specific permissions .
对于大多数配置,您必须使用 Amazon 所称的“Parameter Groups”,它通过 AWS 控制台或 API 进行管理。
logging in Postgres RDS 上有一个特定的页面其中给出了一些使用参数组设置 log_statement
选项的示例。
这意味着您不能在数据库连接中动态更改设置,例如在 pl/pgsql
函数中,但您可以使用 the AWS API 将其作为批处理作业的一部分进行更改或 official CLI client .
关于postgresql - RDS Postgres 更改 SQL log_statement 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997894/