IPV6 issue

Started by Atul Kumarover 2 years ago11 messagesgeneral
Jump to latest
#1Atul Kumar
akumar14871@gmail.com

I have postgres 12 running in centos 7 on my two machines, recently I
changed the authentication of entries of pg_hba.conf to scram-sha-256 for
localhost.

Since then in my one machine, I have started getting the below error when I
use command "psql postgres"

no pg_hba.conf entry for host "::1", user "postgres", database "postgres

I found that localhost is resolve to IPV6 by using below command:

getent hosts localhost

::1 localhost localhost.localdomain localhost6
localhost6.localdomain6

Then I tested the same issue in my second machine

getent hosts localhost

::1 localhost localhost.localdomain localhost6
localhost6.localdomain6

but in my second machine I didn't face any such issue while using command
"psql postgres", I was able to login into the database without such error.

The pg_hba.conf on both machines are identical without having any IPV6
entry in it.

The entry of pg_hba.conf is like below:

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only

local all all
scram-sha-256

# IPv4 local connections:

host all postgres 127.0.0.1/32 scram-sha-256

I am not able to understand that my both machines are resolved to IPV6 then
why is my first machine is throwing this error ?

Please help.

Regards.

#2Andreas Kretschmer
andreas@a-kretschmer.de
In reply to: Atul Kumar (#1)
Re: IPV6 issue

Am 23.11.23 um 20:18 schrieb Atul Kumar:

I am not able to understand that my both machines are resolved to IPV6
then why is my first machine is throwing this error ?

please check
https://techdocs.broadcom.com/us/en/ca-enterprise-software/it-operations-management/network-flow-analysis/21-2/installing/system-recommendations-and-requirements/linux-servers/disable-ipv6-networking-on-linux-servers.html

Andreas

--
Andreas Kretschmer - currently still (garden leave)
Technical Account Manager (TAM)
www.enterprisedb.com

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Atul Kumar (#1)
Re: IPV6 issue

On 11/23/23 11:18, Atul Kumar wrote:

I have postgres 12 running in centos 7 on my two machines, recently I
changed the authentication of entries of pg_hba.conf to
scram-sha-256 for localhost.

Since then in my one machine, I have started getting the below error
when I use command "psql postgres"

no pg_hba.conf entry for host "::1", user "postgres", database "postgres

I found that localhost is resolve to IPV6 by using below command:

getent hosts localhost

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

I don't think this is telling you the whole story.

See what is in

/etc/hosts

and in

/etc/nsswitch.conf

on each machine.

host    all           postgres 127.0.0.1/32
<http://127.0.0.1/32&gt;               scram-sha-256

I am not able to understand that my both machines are resolved to IPV6
then why is my first machine is throwing this error ?

Change this 127.0.0.1/32 to localhost and then be covered for both
situations.

Please help.

Regards.

--
Adrian Klaver
adrian.klaver@aklaver.com

#4Atul Kumar
akumar14871@gmail.com
In reply to: Atul Kumar (#1)
Re: IPV6 issue

Hi,

I found that localhost was set to .bash_profile and when I removed it and
then re-attempted to connected the database using "psql postgres", I got
this new error:

psql postgres -p 5432
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?

So DO I need to restart the postgres service or is there any other
workaround?

Regards.

On Fri, Nov 24, 2023 at 1:08 AM Ron Johnson <ronljohnsonjr@gmail.com> wrote:

Show quoted text

On Thu, Nov 23, 2023 at 2:18 PM Atul Kumar <akumar14871@gmail.com> wrote:

I have postgres 12 running in centos 7 on my two machines, recently I
changed the authentication of entries of pg_hba.conf to scram-sha-256 for
localhost.

Since then in my one machine, I have started getting the below error when
I use command "psql postgres"

no pg_hba.conf entry for host "::1", user "postgres", database "postgres

I found that localhost is resolve to IPV6 by using below command:

getent hosts localhost

::1 localhost localhost.localdomain localhost6
localhost6.localdomain6

Then I tested the same issue in my second machine

getent hosts localhost

::1 localhost localhost.localdomain localhost6
localhost6.localdomain6

but in my second machine I didn't face any such issue while using command
"psql postgres", I was able to login into the database without such error.

The pg_hba.conf on both machines are identical without having any IPV6
entry in it.

The entry of pg_hba.conf is like below:

# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only

local all all
scram-sha-256

# IPv4 local connections:

host all postgres 127.0.0.1/32
scram-sha-256

I am not able to understand that my both machines are resolved to IPV6
then why is my first machine is throwing this error ?

That *is *curious.

Have you exported PGHOST on either server (in, for example,
.pgsql_profile, .bash_profile or .bashrc)? If it is set to localhost on
the primary server then psql will complain like you noticed. If it is
unset on the secondary server, then psql will use the domain socket and not
complain.

#5Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Atul Kumar (#4)
Re: IPV6 issue

On 11/27/23 12:11, Atul Kumar wrote:

Hi,

I found that localhost was set to .bash_profile and when I removed it
and then re-attempted to connected the database using "psql postgres", I
got this new error:

psql postgres -p 5432
psql: error: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?

So DO I need to restart the postgres service or is there any other
workaround?

In postgresql.conf or any include *.conf it points to does

port = 5432

and what is

listen_addresses

set to?

How did you install Postgres?

Do you have more then one version of psql installed?

--
Adrian Klaver
adrian.klaver@aklaver.com

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Adrian Klaver (#5)
Re: IPV6 issue

Adrian Klaver <adrian.klaver@aklaver.com> writes:

On 11/27/23 12:11, Atul Kumar wrote:

I found that localhost was set to .bash_profile and when I removed it
and then re-attempted to connected the database using "psql postgres", I
got this new error:

psql postgres -p 5432
psql: error: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?

Do you have more then one version of psql installed?

Yeah, that. You're apparently using a version of psql/libpq that
thinks the default Unix socket location is /var/run/postgresql;
but the postmaster you are using did not create a socket there.
(Probably it put one in /tmp instead, which is the out-of-the-box
default location. But some distros consider that insecure so they
override it, typically to /var/run/postgresql/.)

The easiest workaround if you have a mishmash of Postgres libraries
is to tell the postmaster to create sockets in both places.
See "unix_socket_directories" parameter.

regards, tom lane

#7Atul Kumar
akumar14871@gmail.com
In reply to: Adrian Klaver (#5)
Re: IPV6 issue

listen_address is set to '*',
version= psql (12.15, server 12.15.19)

Regards.

On Tue, Nov 28, 2023 at 2:01 AM Adrian Klaver <adrian.klaver@aklaver.com>
wrote:

Show quoted text

On 11/27/23 12:11, Atul Kumar wrote:

Hi,

I found that localhost was set to .bash_profile and when I removed it
and then re-attempted to connected the database using "psql postgres", I
got this new error:

psql postgres -p 5432
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?

So DO I need to restart the postgres service or is there any other
workaround?

In postgresql.conf or any include *.conf it points to does

port = 5432

and what is

listen_addresses

set to?

How did you install Postgres?

Do you have more then one version of psql installed?

--
Adrian Klaver
adrian.klaver@aklaver.com

#8Atul Kumar
akumar14871@gmail.com
In reply to: Tom Lane (#6)
Re: IPV6 issue

Hi,

unix_socket_directories is set to default i.e. /tmp and I could see the
socket in /tmp directory.

Regards.

On Tue, Nov 28, 2023 at 2:11 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:

Show quoted text

Adrian Klaver <adrian.klaver@aklaver.com> writes:

On 11/27/23 12:11, Atul Kumar wrote:

I found that localhost was set to .bash_profile and when I removed it
and then re-attempted to connected the database using "psql postgres",

I

got this new error:

psql postgres -p 5432
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?

Do you have more then one version of psql installed?

Yeah, that. You're apparently using a version of psql/libpq that
thinks the default Unix socket location is /var/run/postgresql;
but the postmaster you are using did not create a socket there.
(Probably it put one in /tmp instead, which is the out-of-the-box
default location. But some distros consider that insecure so they
override it, typically to /var/run/postgresql/.)

The easiest workaround if you have a mishmash of Postgres libraries
is to tell the postmaster to create sockets in both places.
See "unix_socket_directories" parameter.

regards, tom lane

#9Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Atul Kumar (#8)
Re: IPV6 issue

On 11/27/23 16:42, Atul Kumar wrote:

Hi,

unix_socket_directories is set to default i.e. /tmp and I could see the
socket in /tmp directory.

You have not answered:

How did you install Postgres?

Do you have more then one version of psql installed?

Though I am pretty sure I know the answer to the second question.

Regards.

On Tue, Nov 28, 2023 at 2:11 AM Tom Lane <tgl@sss.pgh.pa.us
<mailto:tgl@sss.pgh.pa.us>> wrote:

Adrian Klaver <adrian.klaver@aklaver.com
<mailto:adrian.klaver@aklaver.com>> writes:

On 11/27/23 12:11, Atul Kumar wrote:

I found that localhost was set to .bash_profile and when I

removed it

and then re-attempted to connected the database using "psql

postgres", I

got this new error:

psql postgres -p 5432
psql: error: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?

Do you have more then one version of psql installed?

Yeah, that.  You're apparently using a version of psql/libpq that
thinks the default Unix socket location is /var/run/postgresql;
but the postmaster you are using did not create a socket there.
(Probably it put one in /tmp instead, which is the out-of-the-box
default location.  But some distros consider that insecure so they
override it, typically to /var/run/postgresql/.)

The easiest workaround if you have a mishmash of Postgres libraries
is to tell the postmaster to create sockets in both places.
See "unix_socket_directories" parameter.

                        regards, tom lane

--
Adrian Klaver
adrian.klaver@aklaver.com

#10Atul Kumar
akumar14871@gmail.com
In reply to: Adrian Klaver (#9)
Re: IPV6 issue

I Don't know how postgres was installed,

How do I check if I have more than one version of psql installed ?

Regards.

On Tue, Nov 28, 2023 at 6:26 AM Adrian Klaver <adrian.klaver@aklaver.com>
wrote:

Show quoted text

On 11/27/23 16:42, Atul Kumar wrote:

Hi,

unix_socket_directories is set to default i.e. /tmp and I could see the
socket in /tmp directory.

You have not answered:

How did you install Postgres?

Do you have more then one version of psql installed?

Though I am pretty sure I know the answer to the second question.

Regards.

On Tue, Nov 28, 2023 at 2:11 AM Tom Lane <tgl@sss.pgh.pa.us
<mailto:tgl@sss.pgh.pa.us>> wrote:

Adrian Klaver <adrian.klaver@aklaver.com
<mailto:adrian.klaver@aklaver.com>> writes:

On 11/27/23 12:11, Atul Kumar wrote:

I found that localhost was set to .bash_profile and when I

removed it

and then re-attempted to connected the database using "psql

postgres", I

got this new error:

psql postgres -p 5432
psql: error: could not connect to server: No such file or

directory

Is the server running locally and accepting
connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?

Do you have more then one version of psql installed?

Yeah, that. You're apparently using a version of psql/libpq that
thinks the default Unix socket location is /var/run/postgresql;
but the postmaster you are using did not create a socket there.
(Probably it put one in /tmp instead, which is the out-of-the-box
default location. But some distros consider that insecure so they
override it, typically to /var/run/postgresql/.)

The easiest workaround if you have a mishmash of Postgres libraries
is to tell the postmaster to create sockets in both places.
See "unix_socket_directories" parameter.

regards, tom lane

--
Adrian Klaver
adrian.klaver@aklaver.com

#11Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Atul Kumar (#10)
Re: IPV6 issue

On 11/27/23 16:58, Atul Kumar wrote:

I Don't know how postgres was installed,

1) Someone installed it. Ask around on where it came from.

2) Query the package manager to see if it was installed that way?

How do I check if I have more than one version of psql installed ?

A quick and dirty way to see what you are using:

whereis psql

To find all the versions:

sudo find / -name psql

Regards.

On Tue, Nov 28, 2023 at 6:26 AM Adrian Klaver <adrian.klaver@aklaver.com
<mailto:adrian.klaver@aklaver.com>> wrote:

On 11/27/23 16:42, Atul Kumar wrote:

Hi,

unix_socket_directories is set to default i.e. /tmp and I could

see the

socket in /tmp directory.

You have not answered:

    How did you install Postgres?

    Do you have more then one version of psql installed?

Though I am pretty sure I know the answer to the second question.

Regards.

On Tue, Nov 28, 2023 at 2:11 AM Tom Lane <tgl@sss.pgh.pa.us

<mailto:tgl@sss.pgh.pa.us>

<mailto:tgl@sss.pgh.pa.us <mailto:tgl@sss.pgh.pa.us>>> wrote:

     Adrian Klaver <adrian.klaver@aklaver.com

<mailto:adrian.klaver@aklaver.com>

     <mailto:adrian.klaver@aklaver.com

<mailto:adrian.klaver@aklaver.com>>> writes:

      > On 11/27/23 12:11, Atul Kumar wrote:
      >> I found that localhost was set to .bash_profile and when I
     removed it
      >> and then re-attempted to connected the database using "psql
     postgres", I
      >> got this new error:
      >>
      >> psql postgres -p 5432
      >> psql: error: could not connect to server: No such file or

directory

      >>         Is the server running locally and accepting
      >>         connections on Unix domain socket
      >> "/var/run/postgresql/.s.PGSQL.5432"?

      > Do you have more then one version of psql installed?

     Yeah, that.  You're apparently using a version of psql/libpq that
     thinks the default Unix socket location is /var/run/postgresql;
     but the postmaster you are using did not create a socket there.
     (Probably it put one in /tmp instead, which is the out-of-the-box
     default location.  But some distros consider that insecure so

they

     override it, typically to /var/run/postgresql/.)

     The easiest workaround if you have a mishmash of Postgres

libraries

     is to tell the postmaster to create sockets in both places.
     See "unix_socket_directories" parameter.

                              regards, tom lane

--
Adrian Klaver
adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>

--
Adrian Klaver
adrian.klaver@aklaver.com