Re: dblink sin clave

Lists: pgsql-es-ayuda
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
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


From: Rafael Martinez <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no>
To: Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>
Cc: Lista - PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: dblink sin clave
Date: 2009-11-08 19:34:43
Message-ID: 4AF71D53.2010707@usit.uio.no
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Raúl Andrés Duque Murillo wrote:
> 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?

Hola

Utiliza el fichero .pgpass

Mas informacion en:
http://www.postgresql.org/docs/current/static/libpq-pgpass.html

- --
Rafael Martinez, <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no>
Center for Information Technology Services
University of Oslo, Norway

PGP Public Key: http://folk.uio.no/rafael/


From: Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>
To: "Rafael Martinez" <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no>
Cc: "Lista - PostgreSQL" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: dblink sin clave
Date: 2009-11-08 20:19:22
Message-ID: 7CEDB3D835D24E95A32376C9F327993E@Principal
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

> Raúl Andrés Duque Murillo wrote:
>> 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?
>
> Hola
>
> Utiliza el fichero .pgpass
>
> Mas informacion en:
> http://www.postgresql.org/docs/current/static/libpq-pgpass.html
>

Gracias Rafael por la sugerencia, pero el problema de esto es que todos los
clientes locales de postgresql también van a omitir la clave (psql,
pgAdmin,e tc) y no quisiera eso.

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