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 TABLESmá 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í
currvalanextvalfunkce.
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.