Benutzerrechte: GRANT vs ALTER DEFAULT PRIVILEGES

Beim Administrieren der Benutzerrechte gibt es was zu beachten. Neben dem GRANT/REVOKE Befehl, welcher im SQL Standard definiert ist, kennt PostgreSQL noch einen weiteren – ALTER DEFAULT PRIVILEGES.

Normalerweise werden zum Beispiel mit GRANT SELECT  ON ALL TABLES … die Lese-Rechte aller bestehenden und zukünftigen Tabellen gesetzt. PostgreSQL sieht es hier anders:

ALTER DEFAULT PRIVILEGES allows you to set the privileges that will be applied to objects created in the future. (It does not affect privileges assigned to already-existing objects.) Currently, only the privileges for tables (including views), sequences, and functions can be altered.“ (PostgreSQL Dokumentation)

Beispiel:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema 
  GRANT SELECT, INSERT ON TABLES TO myuser;

Demnach wirkt sich der GRANT Befehlt nur auf bestehende Objekte aus.