Как прекратить сеанс в Google Cloud SQL для PostgreSQL? - PullRequest
0 голосов
/ 12 июня 2018

Поскольку Google Cloud SQL для PostgreSQL не предоставляет нам суперпользователя (даже пользователя postgres), я не могу видеть, какие запросы выполняются другими сеансами из pg_stat_activity, и не могу прекратить другие сеансы, если это необходимо.

Например:

postgres@testdb=> select pg_terminate_backend(1584);
ERROR:  42501: must be a member of the role whose process is being terminated or member of pg_signal_backend
LOCATION:  pg_terminate_backend, misc.c:319
Time: 23.800 ms

Без истинного доступа суперпользователя, как мы можем сделать это в экземплярах Cloud SQL PostgreSQL?Только учетная запись cloudqladmin является суперпользователем и AFAIK Я не могу этого сделать:

postgres@testdb=> \dg
                                            List of roles
     Role name     |                         Attributes                         |      Member of
-------------------+------------------------------------------------------------+---------------------
 cloudsqladmin     | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 cloudsqlagent     | Create role, Create DB                                     | {cloudsqlsuperuser}
 cloudsqlreplica   | Replication                                                | {}
 cloudsqlsuperuser | Create role, Create DB                                     | {}
 don               | Create role, Create DB                                     | {cloudsqlsuperuser}
 postgres          | Create role, Create DB                                     | {cloudsqlsuperuser}

postgres@testdb=> set role cloudsqladmin;
ERROR:  42501: permission denied to set role "cloudsqladmin"
LOCATION:  call_string_check_hook, guc.c:9803
Time: 25.293 ms

FWIW, вы можете прекратить сеанс, если вы войдете в систему как пользователь этого сеанса.Пользователи могут прекратить любой из своих сеансов, стандартный материал PostgreSQL.

postgres@postgres=> select pg_terminate_backend(23644);
ERROR:  42501: must be a member of the role whose process is being terminated or member of pg_signal_backend
LOCATION:  pg_terminate_backend, misc.c:319

don@postgres=> select pg_terminate_backend(23644);
 pg_terminate_backend
----------------------
 t
(1 row)

1 Ответ

0 голосов
/ 12 июня 2018

Невозможно назначить роль суперпользователя пользователю PostgreSQL в Cloud SQL.{1}

В любом случае вы можете обратиться к информации об экземпляре в графиках и журналах в разделе Cloud SQL в Cloud Console.{2}

{1}: https://cloud.google.com/sql/docs/postgres/users#other_postgresql_users

{2}: https://cloud.google.com/sql/docs/postgres/diagnose-issues

...