Skip site navigation (1) Skip section navigation (2)

Cambiar en cascada propietario de tablas

From: Luis Eduardo Villarruel <esisnet(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Cambiar en cascada propietario de tablas
Date: 2007-08-22 16:32:09
Message-ID: 46CC6509.80401@gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola Gente de la lista,


Tengo instalado Postgres 7.4 y me conecto a la base de datos a través 
del cliente psql, la base de datos tiene 250 tablas,  estas tablas están 
en el esquema public (el esquema por defecto), todas las tablas de este 
esquema pertenecen al superusuario postgres,  por eso cuando se ejecuta 
una consulta con las credenciales de otro usuario me sale el siguiente 
error.

ERROR: permission denied for relation nombretabla

O.k. ejecuté la siguiente sentencia:

GRANT ALL PRIVILEGES ON DATABASE nombreDB TO myOtroUsuario;

Me aparece el mensaje de que lo privilegios fueron concedidos, pero al 
repetir la consulta bajo las credenciales de myOtroUsuario sale el mismo 
error.
Como esto falló intenté ejecutando esta otra sentencia

GRANT ALL PRIVILEGES ON SCHEMA public TO myOtroUsuario;

Me concedió los permisos pero al intentar ejecutar el select nuevamente 
me arrojó errores. Entonces intente con esto otro.

ALTER SCHEMA public OWNER TO myOtroUsuario;

Esto falló, la primera razón es que en la versión de postgres que tengo 
(7.4) no se soporta esta sentencia y la segunda es que creo que el 
esquema public debe ser siempre de propiedad del usuario postgres.

Lo último que hice fue:

ALTER TABLE public.MyTabla OWNER TO myOtroUsuario;

Esto me funcionó, y al ejecutar un select sobre la tabla bajos las 
credenciales de myOtroUsuario lo pude hacer sin problemas. Así que 
solucioné el problema en parte, lo complicado de esto es que son 250 
tablas y quisiera saber si hay un método mas rapido para cambiar el 
propietario de todas estas tablas, En lugar de hacer esto tabla por 
tabla.  O si hay manera de conceder privilegios sobre todas estas tablas 
a la vez con la sentencia GRANT ALL. También se que para cada base de 
datos hay un esquema llamado pg_catalog  que contiene información sobre 
el sistema y los privilegios que cada usuario tiene sobre los objetos de 
la base de datos, tal vez haciendo un UPDATE en alguna tabla de este 
esquema pueda cambiar los privilegios o el propietario de todas estas 
tablas.

No se agradezco cualquier ayuda que me puedan brindar.

Gracias



Responses

pgsql-es-ayuda by date

Next:From: Alvaro HerreraDate: 2007-08-22 16:54:54
Subject: Re: Cambiar en cascada propietario de tablas
Previous:From: MIGUEL CANCHASDate: 2007-08-22 16:19:06
Subject: ACCESO A LOS USUARIOS

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group