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

Reply via email to