Thread: IPV6 issue
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.
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
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
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"?
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.
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
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
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
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
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
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
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