Обсуждение: IPV6 issue

Поиск
Список
Период
Сортировка

IPV6 issue

От
Atul Kumar
Дата:
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.

Re: IPV6 issue

От
Andreas Kretschmer
Дата:

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




Re: IPV6 issue

От
Adrian Klaver
Дата:
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>               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




Re: IPV6 issue

От
Atul Kumar
Дата:
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:
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.
 

Re: IPV6 issue

От
Adrian Klaver
Дата:
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




Re: IPV6 issue

От
Tom Lane
Дата:
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



Re: IPV6 issue

От
Atul Kumar
Дата:
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:
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

Re: IPV6 issue

От
Atul Kumar
Дата:
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:
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

Re: IPV6 issue

От
Adrian Klaver
Дата:
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




Re: IPV6 issue

От
Atul Kumar
Дата:
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:
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

Re: IPV6 issue

От
Adrian Klaver
Дата:
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