Thread: psql profiles?
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:
psql -h db-host-1.example.com foo
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
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
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
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
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
On 12/07/2018 10:45 AM, Matt Zagrabelny wrote:
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.
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 pssqlpssql () {psql "service=$@"}# and a zsh completion function:$ cat ~/.fpath/_pssql#compdef pssqlPG_SERVICES_CONF=~/.pg_service.confif [[ -r ${PG_SERVICES_CONF} ]]; thencompadd $(sed -nE 's/^ *\[(.*)\] *$/\1/p' ${PG_SERVICES_CONF})fiIt 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.
Angular momentum makes the world go 'round.