Postgresql
如何在 PostgreSQL 中獲取使用者特定的設置?
我必須收集一些關於 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)