Mira yo en PostgreSQL no soy muy bueno, pero revisa en las funciones si los 
programadores no dejaron algún código amarrado a sus usuarios, y por esa razón 
este dando este tipo de error.

 

 

______________________________________

 

Edilberto Arteaga Lopez
Analista Programador 
Fruit of the Loom - Honduras
Tecnologias .Net(C#, VB.Net, ASP.NET, SilverLigth)

Base de Datos (SQL Server, mySQL, PostgreSQL, FireBird)
Sistemas Operativos Linux/NetBSD/Windows(XP/7/2003 Server)
 

Labor omnia vincit.

 

Nota informativa: La información contenida en este mensaje, así como el 
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin 
garantías de ninguna clase, y no otorga derecho alguno. Usted asume 
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o 
sugerido en el presente mensaje.

   

Note: Les informations contenues dans ce message, et le 
Source y inclus, est fourni "TEL QUEL", sans 
garantie d'aucune sorte, et ne confère aucun droit. Vous assumez 
aucun risque pour la mettre en œuvre, utiliser ou exécuter le recommandés ou 
suggéré dans ce message.

 

Nemo auditur qui propriam turpitúdinem alegans.

 

From: pgsql-es-ayuda-ow...@postgresql.org 
[mailto:pgsql-es-ayuda-ow...@postgresql.org] On Behalf Of Rensi Arteaga Copari
Sent: Monday, March 15, 2010 6:23 AM
To: pgsql-es-ayuda@postgresql.org
Subject: Fwd: [pgsql-es-ayuda] problemas con supersusuario

 


Les mando de nuevo mi problema,......................
dado que todavía no encuentro  la causa, 
creen que pueda ser un error de la versión 8.1 de postgres ???
No es extraño que a un superusuario le salga permiso denegado?????




Hola  amigos,

Tengo una base de datos que ha sido desarrollado por varios programadores , 
todos registrados como supersusurios
y ahora que tengo  la base datos en explotación, por seguridad estos 
desarrolladores ya no deben ser supersusurios,
 y les quites este privilegios

ALTER ROLE "vsoliz" NOSUPERUSER; 
... etc


Pero después de quitar algunos supersusuarios, 
cuando otros usuarios  y yo (que soy superusuario todavia)  accedemos  a la 
base de datos
me sale  un error

#42501 - permiso denegado para la relación vad_partida_detalle


Pense que  esto podría ser debido a que   los usuarios desarrolladores son 
dueños de varias funciones, vistas y tablas
y cree una función para asignar como dueño de todo los objetos al usuario 
"postgres"  (esto en en base a una que encontré por la lista) 
pero el problemas persiste y ya  no se  por donde más buscar el problemas 
 (a demas que me parece muy raro que a un superusuario le salga permiso 
denegado)


PARA ASIGNAR COMO DUEÑO AL   p_user    DE TODAS LAS    VISTA Y TABLAS EN EL 
p_esquema
--------------------------------------------------------------

DECLARE
   objeto record;
   x    varchar;
BEGIN
   FOR objeto IN 
      ( SELECT viewname as d FROM pg_views WHERE schemaname=p_esquema
       UNION
       SELECT tablename as d FROM pg_tables WHERE schemaname=p_esquema
       UNION
       SELECT relname as d FROM pg_statio_all_sequences WHERE 
schemaname=p_esquema)
   LOOP

    --  RAISE NOTICE 'Asignando  %   como dueño  %  en el esquema %', p_user,‘ 
objeto.d, p_esquema;
    x='ALTER TABLE "'||p_esquema||'"."'|| objeto.d ||'"
     OWNER TO '||p_user;   
     RAISE NOTICE  '%',x;
      EXECUTE (x);
      
   END LOOP;
END;

  ------------------------------------------------   




PARA ASIGNAR COMO DUEÑO AL   p_user    DE TODASFUNCIONES en el  p_esquema

-----------------------------------

DECLARE
   objeto record;
   tipos_objeto record;
   
   x    varchar;
   tipos varchar;
   tam integer;
   contador integer;
   cuenta_funciones integer;
   tipo_dato varchar;
BEGIN


  -- Consulta los datos de la función
  
  
  cuenta_funciones:=0;

   FOR objeto IN 
      ( 
     
      SELECT p.proname AS name,
             p.oid,
             p.proargtypes AS args,
             p.prorettype AS rettype,
             n.nspname,
             proargnames,
             p.proargmodes,
             p.proallargtypes,
             p.pronargs
      FROM pg_proc p
           INNER JOIN pg_namespace n ON p.pronamespace = n.oid
      WHERE  n.nspname = p_esquema
     )
   LOOP
            -- Arma los atributos de la función          
                
                      tipos:='(';
                      contador=1;
                    
                      tam=objeto.pronargs;
                     
                     WHILE contador <  tam or contador = tam LOOP
                      
                      
                              SELECT 
                               typname 
                              into 
                               tipo_dato 
                              FROM pg_type t
                              WHERE  t.oid=objeto.args[contador -1];
                             
                            IF (contador <>tam)THEN
                               tipos = tipos||objeto.proargnames[contador]||' 
'||tipo_dato ||', ';
                            ELSE
                              tipos = tipos||objeto.proargnames[contador]||' 
'||tipo_dato;
                            END IF;
                            
                            contador = contador +1;
                     END LOOP;
                  tipos = tipos||')';    
   

 x=' ALTER FUNCTION "'||p_esquema||'"."'||objeto.name||'"'||tipos||'
        OWNER TO '||p_user;
        
 
   RAISE NOTICE  'OBJETO %   CONTADOR   % , %',objeto.name,contador,x;

  -- Executa  la funcion de  asignacion de privilegios
     
      EXECUTE (x);
    
     cuenta_funciones:=cuenta_funciones+1;
   END LOOP;
   
    RAISE NOTICE  '%  FUNCIONES ASIGNADAS',cuenta_funciones;
END;




---------------------------------------------------------------









---------------------------------------------------------------------------------
Este mensaje ha sido analizado automáticamente por el MailScanner de ENDE
y no han sido detectados virus ni otros contenidos peligrosos. 


---------------------------------------------------------------------------------
Este mensaje ha sido analizado automáticamente por el MailScanner de ENDE
y no han sido detectados virus ni otros contenidos peligrosos. 

Responder a