Re: Providing the password to psql from a script - Mailing list pgsql-general

From Stephan Szabo
Subject Re: Providing the password to psql from a script
Date
Msg-id 20040215014328.Y77529@megazone.bigpanda.com
Whole thread Raw
In response to Re: Providing the password to psql from a script  (Willem Herremans <willem.herremans@belgacom.net>)
Responses Re: Providing the password to psql from a script  (Willem Herremans <willem.herremans@belgacom.net>)
List pgsql-general
On Sun, 15 Feb 2004, Willem Herremans wrote:

> Martijn van Oosterhout wrote:
>
> >On Sat, Feb 14, 2004 at 05:11:14PM +0100, Willem Herremans wrote:
> >
> >
> >>I have used the Tcl command
> >>
> >>   set psqlChannel [open "|psql $dbname" RDWR]
> >>
> >>to create a channel that effectively becomes the input/output channel
> >>for psql. By writing to that channel, SQL statements are sent to psql,
> >>by reading from that channel, the results are received from psql.
> >>
> >>That works fine, as long as psql does not prompt for a password. The
> >>problem is that psql does not use this channel for prompting for or
> >>reading the password. Instead, the password is prompted for on, and read
> >>from, the terminal from which the tcl application was started and that
> >>is not what I want, because the Tcl application has already received the
> >>password from the user. It is, as if psql does not use stdout and stdin
> >>for the password.
> >>
> >>
> >
> >Look in the manpage for psql, there are several ways to stop it asking for
> >passwords, including the PGPASS environment variable, tne .pgpass file and
> >setting the user as trust in the config.
> >
> >Any of these will do what you want...
> >
> >Hope this helps,
> >
> >
> I am afraid this does not help me very much.
>
> The manpage of psql neither mentions the PGPASS environment variable,
> nor the .pgpass file.

It's actually in the libpq documentation...

The file .pgpass in a user's home directory is a file
that can contain passwords to be used if the connection requires a
password (and no password has been specified otherwise).
This file should have lines of the following format:
hostname:port:databsae:username:password

Each of the first four fields may be a literal value, or * which matches
anything.  The password field from the first line that matches the
current connection parameters will be used.  (Therefore, put more-specific
entries first when you are using wildcards.)
If an entry needs to contain : or
\, escape this character with \.

The permissions on .pgpass must disallow any
access to world or group; achieve this by the command
chmod 0600 ~/.pgpass
If the permissions are less strict than this, the file will be ignored.

pgsql-general by date:

Previous
From: Pascal Polleunus
Date:
Subject: Re: inheritance vs performance
Next
From: Martijn van Oosterhout
Date:
Subject: Re: Providing the password to psql from a script