Роли PostgreSQL против пользователей, предоставьте права

27

В настоящее время я изучаю различия между PostgreSQL и MySQL, поскольку у меня есть новый проект, и я также собираюсь перенести свое существующее программное обеспечение с MySQL на PostgreSQL. Я фактически начал создавать HTML-таблицу со сравнением команд (для пользователей / баз данных / командной строки и т. Д.) Между ними. После прочтения ответа здесь я заметил , что , roleкажется, можно использовать в качестве группы. С MySQL У меня есть два пользователя, в основном государственные ( DELETE, INSERT, SELECTи UPDATEразрешения) , и пользователь администратора с парой дополнительных разрешений.

Так что в основном в командной строке Windows 7 (только локальная разработка) ...

  • Является ли роль пользователем, группой или свободно используемым термином, характерным для PostgreSQL?
  • Как предоставить только определенные разрешения определенному пользователю для всех таблиц в базе данных?
  • Как предоставить все разрешения определенному пользователю для всех таблиц в базе данных?
  • Как, если вообще, роль сравнивается с пользователем при использовании GRANTили REVOKEдля пользовательских разрешений?
Джон
источник

Ответы:

48

Роль является объектом , который функция может , как пользователь и / или в группе. Роль WITH LOGINможет быть использована как пользователь, т.е. вы можете войти в нее. Любая роль может функционировать как группа, включая роли, в которые вы также можете войти как. Таким образом, «пользователь» и «группа» по сути являются терминами, которые указывают на предполагаемое использование роли, между ними нет никакого реального различия. Даже в разновидности SQL PostgreSQL они более или менее используются как синонимы. Например, в документации CREATE USERсказано:

CREATE USER теперь является псевдонимом CREATE ROLE.

Предоставление всего ... см. Руководство дляGRANT . Вы, вероятно, на самом деле хотите предоставить права, ALL TABLES IN SCHEMA publicа не на все таблицы в базе данных.

Предоставление некоторых прав ... то же самое, но вместо GRANT ALLиспользования, GRANT SELECT, INSERTнапример. Снова смотрите руководство.

Роль - это пользователь и / или группа. Вы можете предоставлять только роли, потому что роли - это все, что есть.

Крейг Рингер
источник
Отличное объяснение!
Шарадов
Итак ... каков синтаксис для предоставления всех прав всем таблицам в схеме public?
AlxVallejo
@AlxVallejo это должно помочь . Попробуйте верхнюю ссылку или прочитайте GRANTстраницу документации, где она приведенаALL TABLES IN SCHEMA
Крейг Рингер,