dblink sin clave

From: Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Lista - PostgreSQL" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: dblink sin clave
Date: 2009-11-08 19:14:48
Message-ID: 2BBC89E78B1544A1B095FC71AE55B68C@Principal
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Cordial saludo.

Estoy creando una función que hace uso de dblink para insertar un registro
en un tabla de la misma base de datos y aunque funciona perfectamente tengo
que dejar quemado el password con que se conecta ya que la base de datos y
usuario si lo puedo extraer a través de funciones. Alguna posibilidad de que
utilice el mismo usuario/clave de la sesión activa?

En el manual de postgresql parece que si se pudiera pero así el usuario con
que se invoca la función sea un superusuario requiere la clave.

http://www.postgresql.org/docs/current/static/contrib-dblink-connect.html

El error que obtengo es:

/*************************************************/
ERROR: could not establish connection
DETAIL: fe_sendauth: no password supplied

********** Error **********

ERROR: could not establish connection
SQL state: 08001
Detail: fe_sendauth: no password supplied
/*************************************************/

Agradezco su colaboración.

Copio la función a continuación:

/**********************************************************************************/
CREATE OR REPLACE FUNCTION insertar_log(varchar(30), varchar(500))
RETURNS void AS
$BODY$
DECLARE
paccion ALIAS FOR $1;
pmensaje ALIAS FOR $2;
lCurrentDatabase varchar(30);
lCurrentUser varchar(30);
lCurrentPassword varchar(30);
lConnection varchar(100);
lSentence varchar(600);
lResult text;
BEGIN
/* Current database */
SELECT current_database()::varchar(20)
INTO lCurrentDatabase;

/* Current user */
SELECT current_user::varchar(20)
INTO lCurrentUser;

/* Current password */
lCurrentPassword := 'xxxxxxx';

/* Connection */
lConnection := 'dbname=' || lCurrentDatabase || ' user=' || lCurrentUser ||
' password=' || lCurrentPassword;
SELECT dblink_connect('myconn', lConnection)
INTO lResult;

/* Insert log */
lSentence := 'INSERT INTO def_log(accion_log, mensaje_log) VALUES (''' ||
paccion || ''', ''' || pmensaje || ''');';
SELECT dblink_exec ('myconn', lSentence, false)
INTO lResult;

/* Disconnect */
SELECT dblink_disconnect('myconn')
INTO lResult;
END;
/**********************************************************************************/

Atentamente,

RAUL DUQUE
Bogotá, Colombia

__________ Information from ESET NOD32 Antivirus, version of virus signature database 4580 (20091106) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rafael Martinez 2009-11-08 19:34:43 Re: dblink sin clave
Previous Message Pedro Piñero 2009-11-08 05:13:10 Re: PGDay Cuba 2010