Helpers - компьютеры, интернет, программирование

Почему каждый пользователь создается под групповой ролью PUBLIC по умолчанию в postgres 9.6?

Мне интересно, почему каждая роль или пользователь, созданный в postgresql, создается в группе ролей PUBLIC по умолчанию в postgres? Как я могу изменить группу пользователя по умолчанию с PUBLIC на любую другую группу?

Причина в том, что когда я хочу отозвать привилегию создания для определенной роли, мне нужно выполнить приведенную ниже команду.

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

который отменяет права на создание у каждого пользователя, потому что по умолчанию все пользователи создаются в PUBLIC.

Я пробовал выполнить команду ниже для конкретного пользователя, но это не влияет на привилегии.

REVOKE CREATE ON SCHEMA public FROM someuser;

Ваша помощь очень ценится.

Спасибо


Ответы:


1

«Общественная» роль — особенная — она просто означает всех.

Чтобы ограничить доступ от какого-либо пользователя, вам нужно отозвать привилегии у роли «public», как вы это сделали, а затем добавить привилегии какой-то другой роли. Затем добавьте все роли, для которых вам нужно добавить доступ к этой другой роли.

Например:

-- create a user (role with login privilege)
create role myapp login;
-- set the myapp user's password
\password myapp
-- create the database
create database myapp owner myapp;
-- remove default connection privileges from everyone
revoke connect on database myapp from public;
-- connect to database myapp
\c myapp
-- remove default priviledges from default public schema
revoke all on schema public from public;
-- set the public schema owner, so myapp user can do anything there
alter schema public owner to myapp;

Затем, если вам нужен другой пользователь для доступа к данным, но только для чтения.

-- create a special role
create role myapp_reader;
-- allow the role to connect to the database
grant connect on database myapp to myapp_reader;
-- allow the role to read the tables
grant select on all tables in schema public to myapp_reader;
-- create user in this role
create user myapp_monitor in role myapp_reader;
-- set the password for this user
\password myapp_monitor

Это немного сложнее, чем должно быть. Это для совместимости со старыми версиями.

01.01.2019
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..