psql profiles?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

psql profiles?

Matt Zagrabelny
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
Reply | Threaded
Open this post in threaded view
|

Re: psql profiles?

Alvaro Herrera-9
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

Reply | Threaded
Open this post in threaded view
|

Re: psql profiles?

Matt Zagrabelny


On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: psql profiles?

a.zakirov
On 07.12.2018 01:34, Matt Zagrabelny wrote:

>
>
> On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <[hidden email]
> <mailto:[hidden email]>> 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

Arthur Zakirov
Postgres Professional: http://www.postgrespro.com
Russian Postgres Company
Reply | Threaded
Open this post in threaded view
|

Re: psql profiles?

Matt Zagrabelny

On Fri, Dec 7, 2018 at 7:42 AM Arthur Zakirov <[hidden email]> wrote:
On 07.12.2018 01:34, Matt Zagrabelny wrote:
>
>
> On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <[hidden email]
> <mailto:[hidden email]>> 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
Reply | Threaded
Open this post in threaded view
|

Re: psql profiles?

Ron-2
On 12/07/2018 10:45 AM, Matt Zagrabelny wrote:

On Fri, Dec 7, 2018 at 7:42 AM Arthur Zakirov <[hidden email]> wrote:
On 07.12.2018 01:34, Matt Zagrabelny wrote:
>
>
> On Thu, Dec 6, 2018 at 4:24 PM Alvaro Herrera <[hidden email]
> <mailto:[hidden email]>> 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.