我们在RDS上使用Postgres 9.5,并在运行大容量插入时使用用例关闭SQL日志记录。Bulk insert SQL语句很大,并且记录它的好处不大,因为我们知道它将比我们的set log_min_duration花费更多的时间。
正如在这个职位中提到的,我尝试通过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中是否可以在运行时更改此设置。
发布于 2017-09-01 10:26:05
RDS使用一个不同的权限模型来创建vanilla,因此rds_superuser角色实际上并不拥有“真正”超级用户所拥有的所有权限。实际上,RDS是一种“托管”数据库托管解决方案,完全访问将使您具有破坏或破坏管理的能力。相反,这个角色被授予特定权限的列表。
对于大多数配置,您必须使用亚马逊所称的"参数群",这是通过AWS控制台或API管理的。
Postgres RDS中的日志记录上有一个特定的页面,其中给出了一些使用参数组设置log_statement选项的示例。
这意味着您不能在数据库连接中动态更改设置,例如在pl/pgsql函数中,但是可以使用AWS API或官方CLI客户端将其作为批处理作业的一部分进行更改。
https://stackoverflow.com/questions/45997894
复制相似问题