RE: Cambiar propietario de todos los objetos

From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <alvherre(at)2ndquadrant(dot)com>
Cc: <dbonne(at)uci(dot)cu>, "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Cambiar propietario de todos los objetos
Date: 2012-09-28 15:13:26
Message-ID: BAY155-W635CF90989E7060BC53EE3E3820@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Ya me di cuenta. El problema es que siempre trabajo localmente y por eso creo todo con postgres, seguro muchos lo hacemos asi por comodidad. Me toco hacerlo a nivel de script lo voy a dejar aqui por si alguien tiene el mismo problema.
Claro este solo cambia tablas, vistas, secuencias y funciones si hubiese mas objetos pues solo es modificar el query para obtener los demas.

DO $$DECLARE rec record; sql varchar;BEGIN for rec IN SELECT nspname, relname, relkind,nspname || '.' || relname as obj FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid) WHERE nspname NOT LIKE E'pg\\_%' AND nspname != 'information_schema' AND relkind IN('S','r','v') ORDER BY relkind LOOP sql:='ALTER TABLE ' || rec.obj || ' OWNER TO ' || '"UserMine"'; EXECUTE sql; raise notice 'Nombre:::%',sql; end loop; -- --. /* for rec IN SELECT nspname, proname AS function_name, nspname || '.' || proname || '(' || pg_catalog.oidvectortypes(proargtypes) || ')' as obj, pg_catalog.oidvectortypes(proargtypes) AS parms FROM pg_catalog.pg_proc AS c JOIN pg_namespace n ON (c.pronamespace = n.oid) WHERE nspname != 'information_schema' AND nspname NOT LIKE E'pg\\_%' ORDER BY proname LOOP sql:='ALTER FUNCTION ' || rec.obj || ' OWNER TO ' || '"UserMine"'; raise notice '%',sql; EXECUTE sql; end loop; */END;$$
> CC: dbonne(at)uci(dot)cu; pgsql-es-ayuda(at)postgresql(dot)org
> Subject: RE: [pgsql-es-ayuda] Cambiar propietario de todos los objetos
> From: alvherre(at)2ndquadrant(dot)com
> To: listas_quijada(at)hotmail(dot)com
> Date: Fri, 28 Sep 2012 11:30:14 -0300
>
> Excerpts from Edwin Quijada's message of vie sep 28 10:43:25 -0300 2012:
> >
> > REASSIGN OWNED BY postgres TO "jqmicroc_LotoUsrTouch" pero consigo este errror
> > ERROR: cannot reassign ownership of objects owned by role postgres because they are required by the database system
>
> El usuario postgres es especial; para cualquier otro usuario, los
> objetos de que es dueño habrían quedado registrados en el catálogo
> pg_shdepend. Pero como "postgres" es el usuario que es dueño de todos
> los objetos esenciales del sistema, es imposible borrarlo, y por lo
> tanto hacer seguimiento detallado de los objetos de que es dueño es
> inútil (y contraproducente, porque así el catálogo pg_shdepend ocuparía
> muchísimo espacio innecesariamente). Por lo tanto no se hace. Por lo
> tanto no se puede hacer REASSIGN OWNED para el usuario postgres.
>
> Para la próxima vez piénsalo bien antes de crear todas las tablas con
> ese usuario. En el peor caso, crea otro superusuario que sea dueño de
> todo (pero, por supuesto, si quieres hacer las cosas bien, deberías
> tener roles bien definidos para cada cosa).
>
> En tu situación actual creo que la respuesta es cambiar la propiedad de
> cada objeto individualmente. Pero no tiene por qué ser a mano, puede
> ser un script.
>
> --
> Álvaro Herrera http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
> Para cambiar tu suscripci�n:
> http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alejandro Carrillo 2012-09-28 18:39:28
Previous Message Alvaro Herrera 2012-09-28 14:30:14 RE: Cambiar propietario de todos los objetos