Why do we have a database specification in .pgpass?

Started by Bruce Momjianabout 15 years ago8 messages
#1Bruce Momjian
bruce@momjian.us

We have a database specification in .pgpass:

hostname:port:database:username:password

What is the purpose of 'database' since username/password combinations
are global, not per database? I would like to documents its purpose.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

#2Andrew Dunstan
andrew@dunslane.net
In reply to: Bruce Momjian (#1)
Re: Why do we have a database specification in .pgpass?

On 10/13/2010 02:32 PM, Bruce Momjian wrote:

We have a database specification in .pgpass:

hostname:port:database:username:password

What is the purpose of 'database' since username/password combinations
are global, not per database? I would like to documents its purpose.

If you use wildcards for some of the other params it could well be useful.

cheers

andrew

#3Alvaro Herrera
alvherre@commandprompt.com
In reply to: Bruce Momjian (#1)
Re: Why do we have a database specification in .pgpass?

Excerpts from Bruce Momjian's message of mié oct 13 15:32:22 -0300 2010:

We have a database specification in .pgpass:

hostname:port:database:username:password

What is the purpose of 'database' since username/password combinations
are global, not per database? I would like to documents its purpose.

I think when I wrote it, I was hoping that the db_user_namespace thing
would be changed into a real per-database user implementation. That
would have meant having different passwords depending on the database.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

#4Dennis Björklund
db@zigo.dhs.org
In reply to: Bruce Momjian (#1)
Re: Why do we have a database specification in .pgpass?

We have a database specification in .pgpass:

hostname:port:database:username:password

What is the purpose of 'database' since username/password combinations
are global, not per database? I would like to documents its purpose.

There is the GUC parameter db_user_namespace. Just for that you could
probably use dennis@foo as username instead, so maybe it's not the
purpose. But I can't think of any other reason.

/Dennis

#5Pavel Golub
pavel@microolap.com
In reply to: Bruce Momjian (#1)
Re: Why do we have a database specification in .pgpass?

Hello, Bruce.

You wrote:

BM> We have a database specification in .pgpass:

BM> hostname:port:database:username:password

BM> What is the purpose of 'database' since username/password combinations
BM> are global, not per database? I would like to documents its purpose.

BM> --
BM> Bruce Momjian <bruce@momjian.us> http://momjian.us
BM> EnterpriseDB http://enterprisedb.com

BM> + It's impossible for everything to be true. +

For future use?

--
With best wishes,
Pavel mailto:pavel@gf.microolap.com

#6Kenneth Marshall
ktm@rice.edu
In reply to: Dennis Björklund (#4)
Re: Why do we have a database specification in .pgpass?

On Thu, Oct 14, 2010 at 06:09:35AM +0200, Dennis Bj??rklund wrote:

We have a database specification in .pgpass:

hostname:port:database:username:password

What is the purpose of 'database' since username/password combinations
are global, not per database? I would like to documents its purpose.

There is the GUC parameter db_user_namespace. Just for that you could
probably use dennis@foo as username instead, so maybe it's not the
purpose. But I can't think of any other reason.

/Dennis

This will allow the same user to save and use automatically different
passwords for each separate database.

Cheers,
Ken

#7Peter Eisentraut
peter_e@gmx.net
In reply to: Bruce Momjian (#1)
Re: Why do we have a database specification in .pgpass?

On ons, 2010-10-13 at 14:32 -0400, Bruce Momjian wrote:

We have a database specification in .pgpass:

hostname:port:database:username:password

What is the purpose of 'database' since username/password combinations
are global, not per database? I would like to documents its purpose.

As a side note, the thing at the other end of a connection is not
necessarily a PostgreSQL server. It could be a connection pool proxy.
I don't know if any implementatation could make use of the database
field at the moment, but it should be kept in mind.

That said, it would probably be good to document that the database field
is currently only useful in certain limited circumstances.

#8Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#7)
1 attachment(s)
Re: Why do we have a database specification in .pgpass?

Peter Eisentraut wrote:

On ons, 2010-10-13 at 14:32 -0400, Bruce Momjian wrote:

We have a database specification in .pgpass:

hostname:port:database:username:password

What is the purpose of 'database' since username/password combinations
are global, not per database? I would like to documents its purpose.

As a side note, the thing at the other end of a connection is not
necessarily a PostgreSQL server. It could be a connection pool proxy.
I don't know if any implementatation could make use of the database
field at the moment, but it should be kept in mind.

That said, it would probably be good to document that the database field
is currently only useful in certain limited circumstances.

Agreed, done.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

Attachments:

/rtmp/difftext/x-diffDownload
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index 70d9202..a911c50 100644
*** a/doc/src/sgml/libpq.sgml
--- b/doc/src/sgml/libpq.sgml
*************** myEventProc(PGEventId evtId, void *evtIn
*** 6331,6336 ****
--- 6331,6338 ----
     or the default socket directory) connections coming from the local
     machine. In a standby server, a database name of <literal>replication</>
     matches streaming replication connections made to the master server.
+    The <literal>database</> field is of limited usefulness because
+    users have the same password for all databases in the same cluster.
    </para>
  
    <para>