Muchas gracias por la ayuda, realice lo siguiente: SHOW search_path; --Para conocer el valor de search_path ALTER USER myuser IN DATABASE mydb SET search_path = 'myschema, public, "$user"';
select * from mytable where campo = 'x' Al ejecutar un select me muestra el siguiente mensaje: ERROR: no existe la relación «mytable» LÍNEA 1: select * from mytable where campo = 'x' Me pide a indicar el schema select * from *myschema.mytable* where campo = 'x' Para indicar la tabla se pone el nombre del schema el problema es cuando se requieren usar las funciones o algún otro objeto. Gracias El jue., 13 de sep. de 2018 a la(s) 13:52, Alvaro Herrera ( alvhe...@2ndquadrant.com) escribió: > Fabiola Odái escribió: > > > Hay alguna manera de indicar que un usuario x tiene autorización de usar > un > > schema de la base de datos para que al momento de ejecutar una consulta > no > > tenga que indicar schema.tablename que lo pueda ser directo > > únicamente indicado tablename. > > Esto no es una autorización, sino una indicación de dónde buscar. Lo > que hay que hacer es cambiar el search_path del usuario. Esto se puede > hacer en la sesión misma usando > SET search_path TO ...lista-de-esquemas... > o bien de manera más global (para todas las sesiones) usando > ALTER USER usuario SET search_path TO ... > (quizás "ALTER USER usuario IN DATABASE db" sea más apropiado). > > Ojo que además de la visibilidad, la autorización (GRANT) también es > necesaria, aunque normalmente los esquemas son visibles al pseudo-rol > PUBLIC, es decir a todo el mundo. > > > Observo que solamente el owner user puede hacer uso del schema sin tener > > que indicar el nombre del schema. > > Eso es porque "$user" aparece en el search_path por defecto (es decir, > el usuario ve los objetos que están en un esquema que se llama como él > mismo). > > -- > Álvaro Herrera https://www.2ndQuadrant.com/ > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services > -- Atentamente Fab OC