2017-09-01 110 views
2

我們在RDS上使用Postgres 9.5,並有一個用例來在運行批量插入時關閉SQL日誌記錄。批量插入SQL語句很大,記錄日誌的好處不大,因爲我們知道它需要比我們設置的log_min_duration更多的時間。RDS Postgres更改SQL log_statement值

正如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 

爲什麼我們得到許可被拒絕任何想法,其次做鄉親們知道,如果它能夠在運行時更改此設置的Postgres上RDS

+0

而'rds_superuser'爲您提供本地超級用戶權限(請查看例如'show is_superuser;')?因爲[「*僅超級用戶可以更改此設置*」](https://www.postgresql.org/docs/9.5/static/runtime-config-logging.html#GUC-LOG-STATEMENT)? – dhke

+0

感謝@dhke,那是問題 - rds_superuser不會授予is_superuser。不知道這部分。 – sumit

回答

3

RDS使用不同的權限模型,以香草Postgres的,所以rds_superuser角色實際上並不具有「真正」超級用戶擁有的所有權限。實際上,RDS是一種「託管」數據庫託管解決方案,完全訪問會給您帶來破壞或危害該管理的能力。相反,該角色被授予a list of specific permissions

對於大多數配置,您必須使用Amazon調用的「Parameter Groups」,它們通過AWS控制檯或API進行管理。

logging in Postgres RDS上有一個特定的頁面,它給出了使用參數組設置log_statement選項的一些示例。

這意味着您不能在數據庫連接中動態更改設置,例如在pl/pgsql函數中,但可以使用the AWS APIofficial CLI client將其更改爲批處理作業的一部分。

+0

謝謝。去接受這個答案,因爲它提供了權限部分的答案,以及應用程序是否可以更改RDS上的log_statement配置 – sumit