Tienes al menos dos opciones.  
El primero hace uso de una pequeña consulta y un editor de texto. Tenemos que recopilar los esquemas de nuestro interés:
SELECT nspname
  FROM pg_namespace;
Puede agregar una WHEREcláusula si desea limitar el alcance. Copie el resultado y modifíquelo, para obtener una serie de GRANT USAGE ON SCHEMA ... TO your_role;comandos. Luego solo alimente psql, por ejemplo:
psql -f multigrant.sql
Una variante habitual de esto podría ser un script de shell que recorra los nombres y llamadas recopilados psql, pasando la GRANTdeclaración construida a la -copción.
La otra solución hace básicamente lo mismo en un bloque pl / pgsql, construyendo una consulta dinámica. El núcleo es el mismo: tenemos que recopilar los esquemas. Luego recorremos todos ellos, otorgando el esquema de permisos por esquema:
DO $do$
DECLARE
    sch text;
BEGIN
    FOR sch IN SELECT nspname FROM pg_namespace
    LOOP
        EXECUTE format($$ GRANT USAGE ON SCHEMA %I TO your_role $$, sch);
    END LOOP;
END;
$do$;
Notas :
- a diferencia de las tablas, secuencias, funciones y tipos, no se pueden establecer privilegios predeterminados para los esquemas (a partir de 9.4). Deberá otorgar este privilegio para cualquier esquema recién agregado manualmente.
- Aquí estoy usando la cotización en dólares al construir la consulta dinámica. Esto me permite usar la sintaxis 'normal', en lugar de multiplicar comillas simples, por ejemplo (no presente en este ejemplo). De esta manera, la mayoría de los editores destacarán las declaraciones muy bien.
- También lo uso format()con el%Iespecificador de formato para tener el nombre del objeto correctamente citado si es necesario. Este enfoque es mucho más legible que construir la consulta con concatenación de constantes de cadena y algunasquote_ident()llamadas.
- pg_namespacese puede encontrar en el- pg_catalogesquema. Echa un vistazo a los otros objetos allí: almacenan todos los aspectos de tus esquemas, tablas, etc.
 
                
grant usageel nuevo esquema.Puedes usar también.
fuente