@AlexMine
Учусь

Почему не выдаются права пользователю на работу с базой?

Здравствуйте, почему не получается выдать права пользователю, хотя раньше всегда работал данный способ в моем случае.

CREATE DATABASE bot;
CREATE USER botuser WITH PASSWORD 'botpassword';
GRANT ALL PRIVILEGES ON DATABASE bot TO botuser;

\c bot

CREATE TABLE example (id int PRIMARY KEY, name text)

#Дальше через пользователя postgres, делаю коннект к базе командой:
 psql -d bot -U botuser

SELECT * FROM example;

#Выходит ошибка: нет доступа к таблице example

#Но если даю права именно на SELECT то получается под пользователем забирать данные:

GRANT SELECT ON ALL TABLES IN SCHEMA public TO botuser;


В чем может быть проблема?
  • Вопрос задан
  • 7299 просмотров
Решения вопроса 1
@galaxy
В постгресе права выдаются на конкретный типа объекта (database, schema, table, sequence, etc.) и зависят от этого типа. При этом выданные права на родительский объект не означают наличие каких-либо прав на дочерние объекты.
Вы выдали юзеру все права на DATABASE, это означает, что он может к ней коннектиться и создавать в ней схемы, публикации и временные таблицы. Всё.
Таблицу example вы создаете под другим пользователем, botuser никаких прав на нее не имеет.
https://postgrespro.ru/docs/postgresql/13/ddl-priv
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы