Thread: issue with reading hostname
psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT pg_is_in_recovery();'
so below are my questions:
1. Is the psql client reading the socket file that resides in the /tmp directory to fetch the hostname ?
2. I saw the socket file in /tmp and it is empty. Then how is the psql client still reading the socket file successfully for hostname ?
this is my socket looks ( the size is 0 as the file is empty):
srwxrwxrwx. 1 postgres postgres 0 Apr 22 12:47 .s.PGSQL.5432
Please help me clarify these doubts.
Regards.
On 4/22/24 13:13, Atul Kumar wrote: > Hi, > > I have postgresql version 15 running on centos7. > > I have below query that reads hostname from /tmp directory: > > psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT pg_is_in_recovery();' > > > so below are my questions: > > 1. Is the psql client reading the socket file that resides in the /tmp > directory to fetch the hostname ? > > 2. I saw the socket file in /tmp and it is empty. Then how is the psql > client still reading the socket file successfully for hostname ? > > > this is my socket looks ( the size is 0 as the file is empty): > > srwxrwxrwx. 1 postgres postgres 0 Apr 22 12:47 .s.PGSQL.5432 > > > Please help me clarify these doubts. https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS "host Name of host to connect to. If a host name looks like an absolute path name, it specifies Unix-domain communication rather than TCP/IP communication; the value is the name of the directory in which the socket file is stored. (On Unix, an absolute path name begins with a slash. On Windows, paths starting with drive letters are also recognized.) If the host name starts with @, it is taken as a Unix-domain socket in the abstract namespace (currently supported on Linux and Windows). The default behavior when host is not specified, or is empty, is to connect to a Unix-domain socket in /tmp (or whatever socket directory was specified when PostgreSQL was built). On Windows, the default is to connect to localhost. A comma-separated list of host names is also accepted, in which case each host name in the list is tried in order; an empty item in the list selects the default behavior as explained above. See Section 34.1.1.3 for details. " The simplistic explanation is that the socket is the "host". > > > > Regards. > > > > > > -- Adrian Klaver adrian.klaver@aklaver.com
Hi,I have postgresql version 15 running on centos7.I have below query that reads hostname from /tmp directory:psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT pg_is_in_recovery();'
On Mon, Apr 22, 2024 at 4:14 PM Atul Kumar <akumar14871@gmail.com> wrote:Hi,I have postgresql version 15 running on centos7.I have below query that reads hostname from /tmp directory:psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT pg_is_in_recovery();'
If you installed from the PGDG repository (possibly also the CENTOS repos, but I'm not sure), then the domain socket also lives in :/var/run/postgresql* I find that more expressive than /tmp.* No need to specify the host when using sockets.* Using a socket name makes parameterizing the hostname easier in scripts.
Can we edit the socket to change the hostname in it ?Regards.On Tue, Apr 23, 2024 at 2:41 AM Ron Johnson <ronljohnsonjr@gmail.com> wrote:On Mon, Apr 22, 2024 at 4:14 PM Atul Kumar <akumar14871@gmail.com> wrote:Hi,I have postgresql version 15 running on centos7.I have below query that reads hostname from /tmp directory:psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT pg_is_in_recovery();'
If you installed from the PGDG repository (possibly also the CENTOS repos, but I'm not sure), then the domain socket also lives in :/var/run/postgresql* I find that more expressive than /tmp.* No need to specify the host when using sockets.* Using a socket name makes parameterizing the hostname easier in scripts.
On 4/22/24 14:37, Atul Kumar wrote: > Can we edit the socket to change the hostname in it ? On Ubuntu 22.04 install, given: srwxrwxrwx 1 postgres postgres 0 Apr 22 14:01 .s.PGSQL.5432= -rw------- 1 postgres postgres 68 Apr 22 14:01 .s.PGSQL.5432.lock The contents of .s.PGSQL.5432.lock(the file that indicates a Postgres instance has a lock on the socket) are: 862 /var/lib/postgresql/15/main 1713795311 5432 /var/run/postgresql There is no hostname to be changed as you are working with a local socket. > > Regards. > > On Tue, Apr 23, 2024 at 2:41 AM Ron Johnson <ronljohnsonjr@gmail.com > <mailto:ronljohnsonjr@gmail.com>> wrote: > > On Mon, Apr 22, 2024 at 4:14 PM Atul Kumar <akumar14871@gmail.com > <mailto:akumar14871@gmail.com>> wrote: > > Hi, > > I have postgresql version 15 running on centos7. > > I have below query that reads hostname from /tmp directory: > > psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT > pg_is_in_recovery();' > > > If you installed from the PGDG repository (possibly also the CENTOS > repos, but I'm not sure), then the domain socket also lives in : > /var/run/postgresql > > * I find that more expressive than /tmp. > * No need to specify the host when using sockets. > * Using a socket name makes parameterizing the hostname easier in > scripts. > > -- Adrian Klaver adrian.klaver@aklaver.com
On 4/22/24 14:37, Atul Kumar wrote:
> Can we edit the socket to change the hostname in it ?
On Ubuntu 22.04 install, given:
srwxrwxrwx 1 postgres postgres 0 Apr 22 14:01 .s.PGSQL.5432=
-rw------- 1 postgres postgres 68 Apr 22 14:01 .s.PGSQL.5432.lock
The contents of .s.PGSQL.5432.lock(the file that indicates a Postgres
instance has a lock on the socket) are:
862
/var/lib/postgresql/15/main
1713795311
5432
/var/run/postgresql
There is no hostname to be changed as you are working with a local socket.
>
> Regards.
>
> On Tue, Apr 23, 2024 at 2:41 AM Ron Johnson <ronljohnsonjr@gmail.com
> <mailto:ronljohnsonjr@gmail.com>> wrote:
>
> On Mon, Apr 22, 2024 at 4:14 PM Atul Kumar <akumar14871@gmail.com
> <mailto:akumar14871@gmail.com>> wrote:
>
> Hi,
>
> I have postgresql version 15 running on centos7.
>
> I have below query that reads hostname from /tmp directory:
>
> psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT
> pg_is_in_recovery();'
>
>
> If you installed from the PGDG repository (possibly also the CENTOS
> repos, but I'm not sure), then the domain socket also lives in :
> /var/run/postgresql
>
> * I find that more expressive than /tmp.
> * No need to specify the host when using sockets.
> * Using a socket name makes parameterizing the hostname easier in
> scripts.
>
>
--
Adrian Klaver
adrian.klaver@aklaver.com
so below are my questions:
1. Is the psql client reading the socket file that resides in the /tmp directory to fetch the hostname ?
2. I saw the socket file in /tmp and it is empty. Then how is the psql client still reading the socket file successfully for hostname ?
I mean, Once I change the hostname then how will the socket read the new hostname ? Does it require a postgres service restart ?
On 4/22/24 14:54, Atul Kumar wrote: > I mean, Once I change the hostname then how will the socket read the new > hostname ? Does it require a postgres service restart ? The host name of the machine? > > > > On Tue, Apr 23, 2024 at 3:19 AM Adrian Klaver <adrian.klaver@aklaver.com > <mailto:adrian.klaver@aklaver.com>> wrote: > > On 4/22/24 14:37, Atul Kumar wrote: > > Can we edit the socket to change the hostname in it ? > > On Ubuntu 22.04 install, given: > > srwxrwxrwx 1 postgres postgres 0 Apr 22 14:01 .s.PGSQL.5432= > -rw------- 1 postgres postgres 68 Apr 22 14:01 .s.PGSQL.5432.lock > > The contents of .s.PGSQL.5432.lock(the file that indicates a Postgres > instance has a lock on the socket) are: > > 862 > /var/lib/postgresql/15/main > 1713795311 > 5432 > /var/run/postgresql > > There is no hostname to be changed as you are working with a local > socket. > > > > > Regards. > > > > On Tue, Apr 23, 2024 at 2:41 AM Ron Johnson > <ronljohnsonjr@gmail.com <mailto:ronljohnsonjr@gmail.com> > > <mailto:ronljohnsonjr@gmail.com > <mailto:ronljohnsonjr@gmail.com>>> wrote: > > > > On Mon, Apr 22, 2024 at 4:14 PM Atul Kumar > <akumar14871@gmail.com <mailto:akumar14871@gmail.com> > > <mailto:akumar14871@gmail.com > <mailto:akumar14871@gmail.com>>> wrote: > > > > Hi, > > > > I have postgresql version 15 running on centos7. > > > > I have below query that reads hostname from /tmp directory: > > > > psql postgres -A -t -p 5432 -h /tmp/ -c 'SELECT > > pg_is_in_recovery();' > > > > > > If you installed from the PGDG repository (possibly also the > CENTOS > > repos, but I'm not sure), then the domain socket also lives in : > > /var/run/postgresql > > > > * I find that more expressive than /tmp. > > * No need to specify the host when using sockets. > > * Using a socket name makes parameterizing the hostname easier in > > scripts. > > > > > > -- > Adrian Klaver > adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com> > -- Adrian Klaver adrian.klaver@aklaver.com