From: | Fabiola Odái <fabolvera(at)gmail(dot)com> |
---|---|
To: | alvherre(at)2ndquadrant(dot)com |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: autorización de usar un schema |
Date: | 2018-09-13 20:02:21 |
Message-ID: | CACProuSsF=vYUrL+gdG7tz1RSXMBRXU_TvhLJh+zmkXTrPLQtQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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 (
alvherre(at)2ndquadrant(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2018-09-13 20:21:40 | Re: autorización de usar un schema |
Previous Message | Alvaro Herrera | 2018-09-13 18:52:31 | Re: autorización de usar un schema |