Создайте нового, только для чтения пользователя в postgres

9

Я хотел бы создать нового пользователя в существующей postgresqlбазе данных на машине с Ubuntu. Я хочу предоставить этому пользователю доступ только для чтения ко всем таблицам.

Как это сделать? Нужно ли создавать нового пользователя в Ubuntu?

Спасибо,

Уди

Адам Матан
источник

Ответы:

20

Ссылка взята из этой статьи!

Скрипт для создания пользователя только для чтения:

CREATE ROLE Read_Only_User WITH LOGIN PASSWORD 'Test1234' 
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';

Назначьте разрешение этому пользователю только для чтения:

GRANT CONNECT ON DATABASE YourDatabaseName TO Read_Only_User;
GRANT USAGE ON SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO Read_Only_User;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO Read_Only_User;
Anvesh
источник
Впечатляет! Новый, актуальный ответ через более 6 лет.
Адам Матан
Стоило того. Это была главная ссылка для меня при поиске «создания пользователя только для чтения в Postgres». Лучшая статья с соответствующим примером - это победа в моей книге.
Аудрюс
3

Нет необходимости создавать нового пользователя в операционной системе. Просто выпустите:

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ newusername

в psql (или pgadmin, или любой другой инструмент, который вы предпочитаете), и у вас будет новый пользователь. Доступ этого пользователя зависит от того, для чего настроены ваши таблицы. Но по умолчанию у него не будет разрешений ни для каких таблиц, поэтому вам придется ПРЕДОСТАВИТЬ это. Если вы уже предоставили разрешения общедоступной группе, у пользователя будут такие разрешения с самого начала.

Магнус Хагандер
источник