Швидка версія:
Яку команду потрібно видати, щоб дозволити власнику бази даних дозволити їй отримувати доступ до таблиць у цій базі даних і чи можна це зробити з облікового запису цього власника?
Більш довга версія:
Я створюю базу даних на RDS. У мене є "root" користувач, який я налаштував з Amazon.
Amazon автоматично створює групову роль 'rds_superuser', яка є дуже привілейованою, але насправді не є суперрусером.
Я створюю базу даних та користувача для програми так:
create database master_integration;
CREATE ROLE master_application LOGIN ENCRYPTED PASSWORD '...' VALID UNTIL 'infinity';
GRANT ALL ON DATABASE master_integration TO GROUP rds_superuser WITH GRANT OPTION;
GRANT ALL ON DATABASE master_integration TO GROUP master_application;
\c master_integration;
ALTER DEFAULT PRIVILEGES GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO rds_superuser;
Я оновив цей сценарій, щоб відобразити пропозиції Крейга Рінгера щодо того, як мені впоратися з цим.
Коли додаток підключається (з обліковими записами master_application), він створює (і тому володіє) таблицями.
Моя проблема полягає в тому, що я не можу використовувати свій адміністративний (кореневий) вхід для запуску запитів, оскільки у цього користувача немає привілеїв на столі.
Я вже міг це вирішити, запустивши з облікового запису програми наступне:
GRANT ALL privileges ON ALL TABLES IN SCHEMA public to rds_superuser;
Але здається, що підлеглий користувач надає приватні особи назад адміністративному користувачеві.
Отже ... Чи є команда, яку я можу запускати до або після створення таблиць із програми, яка гарантуватиме власникові бази даних доступ до таблиць у базі даних?
оновлення після повторної спроби привілеїв alter за замовчуванням ...
Це все ще не дає доступу до таблиць; Я бачу, що це пропонується в іншому місці, і це має повний сенс, але це не працює для мене. З оболонки psql:
master_integration=> \ddp
Default access privileges
Owner | Schema | Type | Access privileges
------------------+--------+-------+-------------------------------------------
integration_root | | table | integration_root=arwdDxt/integration_root+
| | | rds_superuser=arwdDxt/integration_root
(1 row)
master_integration=> \dp users
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+-------+-------+-------------------+--------------------------
public | users | table | |
(1 row)
integra_root - це мій користувач, що користується суперпопулярністю, а користувачі - це таблиця в моїй базі даних.
Оновлення
Я отримав досить марну відповідь від когось із Amazon.
Вони попросили мене зателефонувати НАДНІШНЯ ПРИВІЛЕГИ з реєстраційного входу master_application. Хоча це, ймовірно, спрацює, воно не відповість на моє запитання (а це, як я можу це зробити виключно з облікового запису rds_superuser).
Я попросив їх уточнити це, і вони пішли.