Read-Only-Nutzer in PostgreSQL

Nur damit ich nicht immer wieder nachschlagen muss (oder, was wahrscheinlicher ist, einen Teil vergesse)

So wird in PostgreSQL ein universeller Read-Only-Nutzer richtig angelegt:

CREATE ROLE nutzer LOGIN PASSWORD 'passwort' NOINHERIT;
GRANT CONNECT ON DATABASE datenbank TO nutzer;
\c datenbank;

-- Zugriffe auf existierende Objekte
GRANT USAGE ON SCHEMA public TO nutzer;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO nutzer;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO nutzer;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO nutzer;

-- Zugriffe auf zukünftige Objekte
ALTER DEFAULT PRIVILEGES FOR ROLE dbowner IN SCHEMA public GRANT SELECT ON TABLES TO nutzer;
ALTER DEFAULT PRIVILEGES FOR ROLE dbowner IN SCHEMA public GRANT SELECT ON SEQUENCES TO nutzer;
ALTER DEFAULT PRIVILEGES FOR ROLE dbowner IN SCHEMA public GRANT EXECUTE ON FUNCTIONS TO nutzer;