У меня есть база данных postgresql 11 с общедоступной схемой. У меня есть роль user1, которая имеет все привилегии в схеме public.
я бы хотел сделать следующее:
- создать схему some_schema;
- предоставить пользователю some_schema права только на чтение для пользователя user1;
- создать роль user2, которая имеет все привилегии в схеме some_schema.
Я пробовал следующее:
CREATE USER user2 WITH PASSWORD '***';
CREATE schema "some_schema";
GRANT CONNECT ON DATABASE user1 TO some_schema;
GRANT USAGE ON SCHEMA some_schema TO user1;
GRANT ALL ON SCHEMA some_schema to user2;
ALTER DEFAULT PRIVILEGES IN SCHEMA some_schema GRANT SELECT ON TABLES TO user1;
Это не работает, потому что, когда я вхожу в систему таким образом, а затем я создаю тестовую таблицу и выбираю, он помещает этого пользователя1, что отношение some_schema.test не существует:
создать таблицу some_shema.test (id int); \ q
psql -U user1; выберите * из some_schema.test;
result = ›отношения some_schema.test не существует.
Я также изменил pg_hba.conf, чтобы предоставить доступ к новой схеме обоим пользователям, и перезапустил сервер. Я безуспешно пытался прочитать документацию и многое другое. Может так я подключаюсь к базе данных?
Спасибо.
ALTER DEFAULT PRIVILEGES
илиuser2
? Если этоuser2
, тоuser2
необходимо предоставить выбор (или запустить изменение привилегий по умолчанию, или быть частью роли, содержащей всех пользователей, которым разрешено создавать таблицы в схеме) - person JGH   schedule 26.07.2020