Postgresql

如何在 PostgreSQL 中獲取使用者特定的設置?

  • January 31, 2017

我必須收集一些關於 PostgreSQL 角色的資訊。一條資訊是角色是否具有與“通常”不同的設置,通常意味著這裡只有幾個參數的預設值(例如log_statement)。

到目前為止,我只有一個想法:遍歷所有使用者並發出命令

\c postgres username

SHOW log_statement;

然後處理輸出。

我想知道是否有類似的方法,例如查詢pg_settings視圖,顯示每個使用者的設置?我不需要知道特定於會話的差異,只需要知道那些持續存在的差異。

您可以通過查詢 pg_catalog.pg_shadow或 pg_catalog.pg_user 來獲取角色配置,如下所示:

–查詢pg_shadow

francs=# select usename,useconfig from pg_shadow ;
  usename    |           useconfig           
--------------+-------------------------------
postgres     | 
user_a       | 
user_b       | 
skytf_select | {"search_path=skytf, public"}
francs       | 
dwetl        | 
skytf        | 
(7 rows)

francs=# alter role francs  set log_statement='all';
ALTER ROLE

francs=# select usename,useconfig from pg_shadow ;
  usename    |           useconfig           
--------------+-------------------------------
postgres     | 
user_a       | 
user_b       | 
skytf_select | {"search_path=skytf, public"}
rancs        | {log_statement=all}
dwetl        | 
skytf        | 
(7 rows)

引用自:https://dba.stackexchange.com/questions/40429