PostgreSQL8.3:Как сделать чтобы у пользователя совсем не было прав ни на что, кроме SELECT одной таблицы?

Я только начал возиться с PostgreSQL, но не улавливаю очень важных тонкостей.

Есть у меня в базе данных несколько таблиц, в которые добавляются данные допустим супер-юзером. И я хочу создать пользователя guest который может их читать данные только из одной таблицы data, то есть делать SELECT из этой таблицы и больше ничего.

Что я делаю сейчас.

-- создание пользователя guest
CREATE USER guest WITH PASSWORD '1234' NOCREATEDB NOCREATEUSER;
-- отбираем права на всё у пользователя guest
REVOKE ALL PRIVILEGES ON DATABASE database FROM guest;
-- добавляем возможность запроса данных из таблиц data
GRANT SELECT ON data TO guest;
-- добавляем возможность подключения к базе данных ascro пользователя guest
GRANT CONNECT ON DATABASE database TO guest;

После этого захожу пользователем guest и SELECT на таблицу data, работает, а на остальные мои таблицы не работает. Вроде всё как надо. НО оказывается что этот guest по прежнему может делать запросы типа
SELECT * FROM pg_tables; и т д
или
CREATE TABLE table (number int);
Как мне лишить его этих возможности?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Почитайть документацию,

Почитайть документацию, конечно.
http://postgresql.ru.net/manual/privileges.html
http://postgresql.ru.net/manual/sql-grant.html
http://postgresql.ru.net/manual/sql-revoke.html
http://postgresql.ru.net/manual/ddl-schemas.html
http://postgresql.ru.net/manual/ddl-schemas.html#DDL-SCHEMAS-CATALOG

После чего попробовать выполнить то, что там написано.
Не вникая в суть вашего дела, навскидку могу предположить, что не отозваны права на схему public и схему pg_catalog

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023