Ролі PostgreSQL порівняно з користувачами, надайте дозволи


27

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

Отже, в командному рядку Windows 7 (лише для локального розвитку) ...

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

Відповіді:


48

Роль є об'єктом , який функція може , як користувач і / або в групі. Роль WITH LOGINможе використовуватися як користувач, тобто ви можете увійти з нею. Будь-яка роль може функціонувати як група, включаючи ролі, в які ви також можете увійти як. Отже, "користувач" та "група" - це, по суті, терміни, які вказують на призначення ролі, між ними немає реального розмежування. Навіть в ароматі PostgreSQL SQL вони використовуються більш-менш як синоніми. Наприклад, документація на 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
Крейг Рінгер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.