Разграничение доступа к базам


Всем привет. Возник такой у меня такой вопрос, каким образом можно сделать, так что когда подключаешся к серверу под ролью test, то можно было работать только с базой под именем test. И чтобы не было возможности что либо изменять или удалять в базе test2, postgres и есть ли возможность скрыть эти базы ?
P.S: Базу начал изучать совсем недавно, так что если спросил как то не так извиняйте.

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

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

Прекращаем изучать PostgreSQL

Прекращаем изучать PostgreSQL по сомнительным инструментам типа pgAdmin и начинаем читать мануал.
Создавайте базу не с владельцем test, убирайте лишние права и будет вам счастье

Пробовал делать вот так

Пробовал делать вот так вот:
CREATE ROLE user1 WITH NOSUPERUSER LOGIN PASSWORD '123' ;
CREATE DATABASE user1db WITH OWNER = user1;
GRANT ALL PRIVILEGES ON DATABASE user1db TO user1;
GRANT CONNECT ON DATABASE user1db TO user1;
Другие базы удалять не могу, создавать тоже. Но вот в других базах под user1 могу создавать таблицы, хотя не должен. Чего не доделал ?

Самое время почитать про

Самое время почитать про команду REVOKE
В БД по умолчанию есть схема PUBLIC, надо забрать права оттуда.
http://postgresql.ru.net/manual/ddl-schemas.html
откуда читаем:
Заметим, что по умолчанию, для схемы public привилегии CREATE и USAGE имеет любой пользователь. Это позволяет всем подключенным к базе данных пользователям, создавать объекты в схеме public. Если вы не хотите разрешать это, вы можете отобрать данную привилегию:

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

Огромнейшее спасибо, что

Огромнейшее спасибо, что подсказали. Буду дальше настраивать.

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

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

Back to top

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