如何仅对一个数据库角色启用 Google Cloud PostgreSQL log_statements?

问题描述 投票:0回答:3

我只想为一个特定角色进行查询登录。但似乎无法使用默认

cloudsqlsuperuser
用户拥有的
postgres
角色的权力来打开它:

postgres=> ALTER ROLE my_log_role SET log_statement = 'all';
ERROR:  permission denied to set parameter "log_statement"

可以通过 Cloud SQL 工具为整个实例打开

log_statement
,但是可以针对选定的角色而不是托管 PostgreSQL 中的所有角色来完成此操作吗?

postgresql logging google-cloud-sql privileges
3个回答
1
投票

只有超级用户才能更改此设置。 (https://www.postgresql.org/docs/9.5/runtime-config-logging.html#GUC-LOG-STATMENT) 检查 cloudsqlsuperuser 是否是运行“show is_superuser;”的超级用户

超级用户限制 https://cloud.google.com/sql/docs/postgres/users#superuser_restrictions


1
投票

由于 Cloud SQL for PostgreSQL 是一项托管服务,因此不提供运行以下命令所需的

superuser
”访问权限:

postgres=> ALTER ROLE my_log_role SET log_statement = 'all';
但是,

虽然您无法创建具有超级用户权限的数据库用户,但您可以使用具有其中一些权限的

cloudsqlsuperuser

 角色创建数据库用户

如果这是一个障碍,您可以考虑在 Google 计算引擎 (GCE) 实例上托管 PostgreSQL,您将在其中拥有完全控制权。


0
投票
我能够通过首先运行以下命令来使其适用于我的 aws aurora postgresql 实例:

grant set on parameter log_statement to <master_user>;
然后我就可以运行更改角色命令

© www.soinside.com 2019 - 2024. All rights reserved.