La mia risposta è simile a questa su ServerFault.com .
Essere conservatore
Se vuoi essere più conservatore che concedere "tutti i privilegi", potresti provare qualcosa di più simile a questi.
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO some_user_;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO some_user_;
L'impiego di public
li si riferisce al nome dello schema predefinito creato per ogni nuovo database / catalogo. Sostituisci con il tuo nome se hai creato uno schema.
Accesso allo schema
Per accedere a uno schema, per qualsiasi azione, l'utente deve disporre dei diritti di "utilizzo". Prima che un utente possa selezionare, inserire, aggiornare o eliminare, a un utente deve essere concesso "l'utilizzo" di uno schema.
Non noterai questo requisito la prima volta che utilizzi Postgres. Per impostazione predefinita, ogni database ha un primo schema denominato public
. E a ogni utente per impostazione predefinita sono stati concessi automaticamente i diritti di "utilizzo" per quel particolare schema. Quando si aggiunge uno schema aggiuntivo, è necessario concedere esplicitamente i diritti di utilizzo.
GRANT USAGE ON SCHEMA some_schema_ TO some_user_ ;
Estratto dal documento Postgres :
Per gli schemi, consente l'accesso agli oggetti contenuti nello schema specificato (supponendo che siano soddisfatti anche i requisiti di privilegio degli oggetti). In sostanza, ciò consente al beneficiario di "cercare" oggetti all'interno dello schema. Senza questa autorizzazione, è ancora possibile vedere i nomi degli oggetti, ad esempio interrogando le tabelle di sistema. Inoltre, dopo aver revocato questa autorizzazione, i backend esistenti potrebbero contenere istruzioni che hanno precedentemente eseguito questa ricerca, quindi questo non è un modo completamente sicuro per impedire l'accesso agli oggetti.
Per ulteriori discussioni, vedere la domanda, cosa fa esattamente l'uso della sovvenzione su SCHEMA? . Presta particolare attenzione alla risposta dell'esperto di Postgres Craig Ringer .
Oggetti esistenti contro futuro
Questi comandi hanno effetto solo sugli oggetti esistenti. Le tabelle e simili che creerai in futuro ottengono privilegi predefiniti fino a quando non riesci a eseguire quelle righe sopra. Vedere l' altra risposta di Erwin Brandstetter per modificare le impostazioni predefinite influendo in tal modo sugli oggetti futuri.