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
anextval
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.