Thread: psql profiles?

psql profiles?

From
Matt Zagrabelny
Date:
Greetings,

I'm setting up my workstation to use "gss" for auth to a variety of Pg systems on different hosts.

I'd rather not have to specify the "-h" for a connection:


I'd rather do:

psql foo

and have it know that I connect to foo on host db-host-1.example.com.

Is this possible with psql or do I hack together some wrapper script?

Thanks for any input!

-m

Re: psql profiles?

From
Alvaro Herrera
Date:
On 2018-Dec-06, Matt Zagrabelny wrote:

> I'd rather do:
> 
> psql foo
> 
> and have it know that I connect to foo on host db-host-1.example.com.
> 
> Is this possible with psql or do I hack together some wrapper script?

Sure, just define a pg_service.conf file.
https://www.postgresql.org/docs/11/libpq-pgservice.html

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Re: psql profiles?

From
Matt Zagrabelny
Date:


On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
On 2018-Dec-06, Matt Zagrabelny wrote:

> I'd rather do:
>
> psql foo
>
> and have it know that I connect to foo on host db-host-1.example.com.
>
> Is this possible with psql or do I hack together some wrapper script?

Sure, just define a pg_service.conf file.
https://www.postgresql.org/docs/11/libpq-pgservice.html

Thanks Alvaro!

Is there any shorter version than:

psql "service=foo"

?

If not, I can make a shell alias that puts the "service=$@" into the command.

Thanks again!

-m

Re: psql profiles?

From
Arthur Zakirov
Date:
On 07.12.2018 01:34, Matt Zagrabelny wrote:
> 
> 
> On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <alvherre@2ndquadrant.com 
> <mailto:alvherre@2ndquadrant.com>> wrote:
> 
>     Sure, just define a pg_service.conf file.
>     https://www.postgresql.org/docs/11/libpq-pgservice.html
> 
> 
> Thanks Alvaro!
> 
> Is there any shorter version than:
> 
> psql "service=foo"
> 
> ?
> 
> If not, I can make a shell alias that puts the "service=$@" into the 
> command.

Also you can set environment variable PGSERVICE=foo in your .bashrc. Or 
you can just set variable PGHOST=db-host-1.example.com. In last case you 
don't need pg_service.conf file.

-- 
Arthur Zakirov
Postgres Professional: http://www.postgrespro.com
Russian Postgres Company


Re: psql profiles?

From
Matt Zagrabelny
Date:

On Fri, Dec 7, 2018 at 7:42 AM Arthur Zakirov <a.zakirov@postgrespro.ru> wrote:
On 07.12.2018 01:34, Matt Zagrabelny wrote:
>
>
> On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <alvherre@2ndquadrant.com
> <mailto:alvherre@2ndquadrant.com>> wrote:
>
>     Sure, just define a pg_service.conf file.
>     https://www.postgresql.org/docs/11/libpq-pgservice.html
>
>
> Thanks Alvaro!
>
> Is there any shorter version than:
>
> psql "service=foo"
>
> ?
>
> If not, I can make a shell alias that puts the "service=$@" into the
> command.



Thanks for the hints and discussion about this.

Here's my final implementation for the curious and to close the loop:

# a zsh function to avoid having to type "service="

$ which pssql
pssql () {
        psql "service=$@"
}

# and a zsh completion function:

$ cat ~/.fpath/_pssql
#compdef pssql

PG_SERVICES_CONF=~/.pg_service.conf

if [[ -r ${PG_SERVICES_CONF} ]]; then
    compadd $(sed -nE 's/^ *\[(.*)\] *$/\1/p' ${PG_SERVICES_CONF})
fi

 It works like a charm!

Thanks for all the help!

-m

Re: psql profiles?

From
Ron
Date:
On 12/07/2018 10:45 AM, Matt Zagrabelny wrote:

On Fri, Dec 7, 2018 at 7:42 AM Arthur Zakirov <a.zakirov@postgrespro.ru> wrote:
On 07.12.2018 01:34, Matt Zagrabelny wrote:
>
>
> On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <alvherre@2ndquadrant.com
> <mailto:alvherre@2ndquadrant.com>> wrote:
>
>     Sure, just define a pg_service.conf file.
>     https://www.postgresql.org/docs/11/libpq-pgservice.html
>
>
> Thanks Alvaro!
>
> Is there any shorter version than:
>
> psql "service=foo"
>
> ?
>
> If not, I can make a shell alias that puts the "service=$@" into the
> command.



Thanks for the hints and discussion about this.

Here's my final implementation for the curious and to close the loop:

# a zsh function to avoid having to type "service="

$ which pssql
pssql () {
        psql "service=$@"
}

# and a zsh completion function:

$ cat ~/.fpath/_pssql
#compdef pssql

PG_SERVICES_CONF=~/.pg_service.conf

if [[ -r ${PG_SERVICES_CONF} ]]; then
    compadd $(sed -nE 's/^ *\[(.*)\] *$/\1/p' ${PG_SERVICES_CONF})
fi

 It works like a charm!

I made bash functions to do something similar, with just hardcoded server names.  It has auto-complete and allows me to use descriptive names instead of server names and custom postgres versions.

--
Angular momentum makes the world go 'round.