В чем разница между пользователем и ролью?

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

Я читаю документацию PostgreSQL, которую она читает следующим образом:

Примечание. Как объясняется в главе 20, PostgreSQL фактически выполняет привилегии управления с точки зрения "ролей". В этой главе мы последовательно используем пользователя базы данных для обозначения "роли с привилегией LOGIN".

Это в основном означает, что роль является пользователем базы данных? Или существует разница между ролью и пользователем? Могут ли пользователи иметь полные привилегии, а роли - это пользователи, у которых всегда есть полные привилегии?

Ответы

Ответ 1

Предыдущие версии Postgres и некоторых других систем БД имеют отдельные концепции "групп" (которым предоставляется доступ к объектам базы данных) и "пользователям" (которые могут войти в систему и являются членами одной или нескольких групп).

В современных версиях Postgres эти две концепции были объединены: "роль" может иметь возможность входа в систему, способность "наследовать" от других ролей (например, пользователь, являющийся членом группы, или группа являющийся членом другой группы) и доступ к объектам базы данных.

Для удобства многие инструменты и руководства относятся к любому пользователю с полномочиями на вход в качестве "пользователя" или "роли входа", а любые без "группы" или "групповой роли", поскольку полезно и общепринято будьте грубей к этой структуре. Это полностью конвенция терминологии и для понимания разрешений вам нужно понять только доступные варианты создания ролей и предоставление они получают доступ.