From: | suso <jlcubas(at)terra(dot)es> |
---|---|
To: | Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: funcion para cambiar clave de un usuario |
Date: | 2009-09-15 21:55:28 |
Message-ID: | 4AB00D50.801@terra.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola Julio, no me dió error al compilarla desde pgadmin,pero sí al ejecutarla
ERROR: no existe el rol «antonio»
CONTEXT: sentencia SQL: «ALTER ROLE Antonio WITH PASSWORD 'carmel'»
PL/pgSQL function "cambiar" line 3 at sentencia EXECUTE
La funcion me ha quedado así
Antonio es el superusuario, o sea que, y es propietario tambien de la BD desde la que ejecuto la
funcion.
Tiene todos los derechos de acceso
CREATE OR REPLACE FUNCTION cambiar(clave character varying)
RETURNS boolean AS
$BODY$
BEGIN
execute 'ALTER ROLE '||current_user||' WITH PASSWORD '''||clave||'''';
RETURN true;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
>
>
> El 15 de septiembre de 2009 16:11, suso <jlcubas(at)terra(dot)es
> <mailto:jlcubas(at)terra(dot)es>> escribió:
>
> Hola de nuevo, tenngo esta función para intentar cambiar el pass del
> usuario,pero me da error al intentar ejecutarla desde el mismo
> pgadmin, está mal escrita..
>
> El error me lo da en la línea del ALTER ROLE.
>
> CREATE OR REPLACE FUNCTION cambiar(clave character varying)
> RETURNS boolean AS
> $BODY$
> DECLARE
> nombre varchar;
> BEGIN
> nombre = current_user;
> ALTER ROLE nombre WITH PASSWORD clave;
> RETURN true;
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE
>
> He buscado info en el manual de postgres, en internet, y
> "supuestamente" esta bien puesto, pero no es así, por qué, qué estoy
> haciendo mal?.
>
> Muchas gracias
> Un saludo
> Suso
>
>
> Imagino que el error que te marca es que no encuentra el role nombre.
> Para hacer esto tendrias que armar la sentencia del alter role con execute.
>
> CREATE OR REPLACE FUNCTION cambiar(clave character varying)
> RETURNS boolean AS
> $BODY$
> DECLARE
> --nombre varchar;
> BEGIN
> --nombre = current_user;
> execute 'ALTER ROLE '||current_user ||' WITH PASSWORD
> '''||clave||'''';
> RETURN true;
> END;
> $BODY$
> LANGUAGE 'plpgsql' VOLATILE;
>
From | Date | Subject | |
---|---|---|---|
Next Message | suso | 2009-09-15 21:57:30 | Re: funcion para cambiar clave de un usuario |
Previous Message | ramirex | 2009-09-15 21:52:36 | Re: Rendimiento de postgres |