Re: autorización de usar un schema

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

In response to

Responses

Browse pgsql-es-ayuda by date

  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