sql >> Databáze >  >> RDS >> PostgreSQL

Udělte vše na konkrétním schématu v db skupinové roli v PostgreSQL

Našli jste zkratku pro nastavení oprávnění pro všechny existující tabulky v daném schématu. Manuál objasňuje:

(ale nezapomeňte, že ALL TABLES má se za to, že zahrnuje zhlédnutí a zahraniční tabulky ).

Odvážný důraz můj. serial sloupce jsou implementovány pomocí nextval() na sekvenci jako výchozí sloupec a s citací manuálu:

Pro sekvence toto oprávnění umožňuje použití currval a nextval funkce.

Pokud tedy existují serial sloupců, budete také chtít udělit USAGE (nebo ALL PRIVILEGES ) v sekvencích

GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;

Poznámka:Sloupce identity v Postgresu 10 nebo novějším používají implicitní sekvence, které nevyžadují další oprávnění. (Zvažte upgrade serial sloupce.)

A co nové objekty?

Také vás budou zajímat DEFAULT PRIVILEGES pro uživatele nebo schémata:

ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE          ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;

Tím se automaticky nastaví oprávnění pro objekty vytvořené v budoucnu – ale ne pro již existující objekty.

Výchozí oprávnění jsou pouze použito na objekty vytvořené cílovým uživatelem (FOR ROLE my_creating_role ). Pokud je tato klauzule vynechána, použije se jako výchozí aktuální uživatel spouštějící ALTER DEFAULT PRIVILEGES . Chcete-li být explicitní:

ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;

Všimněte si také, že všechny verze pgAdmin III mají drobnou chybu a zobrazení výchozí oprávnění v podokně SQL, i když se nevztahují na aktuální roli. Nezapomeňte upravit FOR ROLE klauzule ručně při kopírování skriptu SQL.



  1. Řetězec objednávky SQL jako číslo

  2. Jak FLOOR() funguje v MariaDB

  3. Vynutit omezení cizího klíče na sloupce stejné tabulky

  4. Najděte řetězec prohledáním všech tabulek na serveru SQL Server