Thread: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
On 8/16/2014 8:41 AM, lin wrote: > I change the value of "unix_socket_directories" in postgresql.conf , > then restart the database, but it cannot connect the database used > like this > "psql -d postgres -p 5432" , it must given the parameter " -h /xx/xx" > to use the Unix domain socket。 > how to fix this issue ? the client has no access to postgresql.conf, it has no idea you changed it. the default value is baked into libpq.so at compile time. -- john r pierce 37N 122W somewhere on the middle of the left coast
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
Le 16 août 2014 17:44, "lin" <jluwln@163.com> a écrit :
>
> Hi all,
> I change the value of "unix_socket_directories" in postgresql.conf , then restart the database, but it cannot connect the database used like this
> "psql -d postgres -p 5432" , it must given the parameter " -h /xx/xx" to use the Unix domain socket。
> how to fix this issue ?
>
That ain't an issue. The client, psql here, can't know where the server put the socket if it isn't in the default location.
> the test steps as below :
> [wln@localhost postgres9.3]$ cat data/postgresql.conf | grep unix_socket_directories
> unix_socket_directories = '/tmp/wln' # comma-separated list of directories
>
> [wln@localhost postgres9.3]$ psql -d postgres -p 5432
> psql: could not connect to server: No such file or directory.
> Is the server running locally and accepting
> connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
> [wln@localhost postgres9.3]$ psql -d postgres -p 5432 -h /tmp/wln
> psql (9.3beta2)
> Type "help" for help.
>
> postgres=# \q
> [wln@localhost postgres9.3]$
>
> Thanks,
> waln
>
>
>
>
>
>
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
On Aug 16, 2014, at 8:49 AM, John R Pierce <pierce@hogranch.com> wrote: > On 8/16/2014 8:41 AM, lin wrote: >> I change the value of "unix_socket_directories" in postgresql.conf , then restart the database, but it cannot connectthe database used like this >> "psql -d postgres -p 5432" , it must given the parameter " -h /xx/xx" to use the Unix domain socket。 >> how to fix this issue ? > > the client has no access to postgresql.conf, it has no idea you changed it. the default value is baked into libpq.so atcompile time. You might find the environment variable PGHOST useful. Cheers, Steve
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
On August 16, 2014 11:41:02 AM EDT, lin <jluwln@163.com> wrote: >Hi all, >I change the value of "unix_socket_directories" in postgresql.conf , >then restart the database, but it cannot connect the database used like >this >"psql -d postgres -p 5432" , it must given the parameter " -h /xx/xx" >to use the Unix domain socket。 > how to fix this issue ? I'll start by saying that your test case is very clear, and thank you for it. I am unsure what your goal is, however. Iassume you are trying to set up parallel postgres processes, for debugging. I've done this recently, for that reason. First thing to point out is that you need only one of -h and -p. They are redundant options, because you only connect topostgres either over TCP (-p) or with a unix domain socket (-h). Second, what you're seeing is necessary. If you change the default, then psql doesn't know where to look. However, you canrecover the old behaviour with shell tricks: $ alias psql='psql -h /xx/xx' $ psql -d postgres (Personally, I wrote a short wrapper script called "client.sh" which depth-first searches for a postgres db directory andthe runs 'psql -h' with the first one it finds; equally well you could have this script install an alias) Are you perhaps confused about what a unix domain socket is? Why are you changing it? This is a decent description of it: http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man4/unix.4
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
On 8/16/2014 9:01 AM, Nick Guenther wrote: > First thing to point out is that you need only one of -h and -p. They are redundant options, because you only connectto postgres either over TCP (-p) or with a unix domain socket (-h). what??!? no, this is totally wrong. psql -h myserver -p 5435 psql -h /path/to/socket -p 5433 those are both valid. if there is no hostname, OR the hostname starts with /, then it uses a unix domain socket. -- john r pierce 37N 122W somewhere on the middle of the left coast
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
On Aug 16, 2014, at 9:01 AM, Nick Guenther <nguenthe@uwaterloo.ca> wrote: > > > On August 16, 2014 11:41:02 AM EDT, lin <jluwln@163.com> wrote: >> Hi all, >> I change the value of "unix_socket_directories" in postgresql.conf , >> then restart the database, but it cannot connect the database used like >> this >> "psql -d postgres -p 5432" , it must given the parameter " -h /xx/xx" >> to use the Unix domain socket。 >> how to fix this issue ? > > I'll start by saying that your test case is very clear, and thank you for it. I am unsure what your goal is, however. Iassume you are trying to set up parallel postgres processes, for debugging. I've done this recently, for that reason. > > First thing to point out is that you need only one of -h and -p. They are redundant options, because you only connectto postgres either over TCP (-p) or with a unix domain socket (-h). Not really. In the case of a TCP connection you need -h for the hostname and -p for the port. For a unix socket connectionyou use -h to specify the directory the unix socket is in, and -p is used to generate the name of the socket withinthat directory. If you omit one or both then the compiled-in defaults will be used, but it still uses both values toconnect. > > Second, what you're seeing is necessary. If you change the default, then psql doesn't know where to look. However, youcan recover the old behaviour with shell tricks: > $ alias psql='psql -h /xx/xx' > $ psql -d postgres Setting environment variables to point to your preferred instance will also work - and it'll work with any client that useslibpq (which is probably almost everything that's not java). Cheers, Steve > > (Personally, I wrote a short wrapper script called "client.sh" which depth-first searches for a postgres db directory andthe runs 'psql -h' with the first one it finds; equally well you could have this script install an alias) > > Are you perhaps confused about what a unix domain socket is? Why are you changing it? This is a decent description of it: > http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man4/unix.4 > > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
On 8/16/2014 9:16 AM, Steve Atkins wrote: > Setting environment variables to point to your preferred instance will also work - and it'll work with any client thatuses libpq (which is probably almost everything that's not java). java/jdbc doesn't support unix domain sockets anyways, so that's moot for the OP's issue. -- john r pierce 37N 122W somewhere on the middle of the left coast
Re: change the value of "unix_socket_directories" , must used "-h /xx/xx" to use the Unix domain socket
John R Pierce <pierce@hogranch.com> writes: > On 8/16/2014 9:16 AM, Steve Atkins wrote: >> Setting environment variables to point to your preferred instance will also work - and it'll work with any client thatuses libpq (which is probably almost everything that's not java). > java/jdbc doesn't support unix domain sockets anyways, so that's moot > for the OP's issue. Another idea (which is also only for libpq-based apps) is to set up a "service" file. http://www.postgresql.org/docs/9.3/static/libpq-pgservice.html regards, tom lane