Привет всем!
Я только не давно начал осваивать PostgreSQL и у меня возникли несколько вопросов:
1 Имеется несколько юзеров и имеется одна таблица с данными. Необходимо сделать так, чтобы один из них имел возможность работать только с определенными записями в этой таблице, а другие бы просто не видел. Как это реализовать на уровне раздачи прав в базе данных?
2 С помощью системы ролей я дал возможность юзерам работать с одной таблицей. Но вот сделать так, чтобы юзер не мог создать новую таблицу никак не получается. Любой юзер коннектиться и создает новую таблицу. Как закрыть им такую возможность?
Буду очень благодарен!
1.
1. Никак.
Согласно стандарту SQL права даются на таблицы, а не на записи. Поэтому если есть необходимость в таком разграничении доступа, то нужно делать отдельную таблицу для каждой группы пользователей и раздавать права на таблицы. Далее можно, например, просто написать функцию, делающую выборку записей согласно пользователю и VIEW для пользователей которые должны видеть всё. (это только один из вожможных путей решения - как будет оптимальней, не зная ваших данных и вообще специфики сказать сложно).
2. Отобрать права на создание таблиц в данной базе и схеме.
Помоему достаточно отобрать CREATE и TEMPORARY. Попробуйте.