Я использую CloudSQL Postgres 11 на GCP, и у меня есть несколько вопросов относительно разрешений и грантов. Я просто не понимаю, как быть новичком в postgres.
У меня есть пользователь, pgadmin
, который является суперпользователем. С помощью этого пользователя я могу подключиться к экземпляру и создать базу данных с именем «песочница», например.
У меня есть роль приложения, которая определяется следующим образом:
CREATE ROLE app;
GRANT CONNECT ON DATABASE <database name> TO app;
GRANT USAGE, CREATE ON SCHEMA public TO app;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO app;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO app;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE ON SEQUENCES TO app;
Я создаюпользователь с именем app_sandbox, которому я предоставляю эту роль.
Затем пользователь приложения выполняет миграцию базы данных, используя flyway, который создает 2 таблицы. С этой стороны все в порядке.
Но с моим суперпользователем, pgadmin, я не вижу эти таблицы и не запрашиваю их, даже если этот пользователь владеет базой данных и является суперпользователем. Я испробовал все виды грантов. Такое ощущение, что я упускаю что-то важное, потому что даже если я верен в создании роли «только для чтения» с пользователем pgadmin, я не могу предоставить доступ к базовым таблицам в общедоступной схеме базы данных.
Чего мне не хватает?