From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | Jason Swails <jason(dot)swails(at)gmail(dot)com>, "Peter J(dot) Holzer" <hjp-pgsql(at)hjp(dot)at> |
Cc: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Cannot connect to postgresql-11 from another machine after boot |
Date: | 2020-02-17 16:42:17 |
Message-ID: | e8d76919-4ab3-3309-a40f-a056830c6c8d@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 2/17/20 7:17 AM, Jason Swails wrote:
>
>
> On Sun, Feb 16, 2020 at 8:51 AM Peter J. Holzer <hjp-pgsql(at)hjp(dot)at
> <mailto:hjp-pgsql(at)hjp(dot)at>> wrote:
>
> On 2020-02-13 21:03:48 -0800, Adrian Klaver wrote:
> > On 2/13/20 9:02 PM, Adrian Klaver wrote:
> > > On 2/13/20 7:54 PM, Jason Swails wrote:
> > > > The problem is that after my machine boots, I'm unable to
> connect to
> > > > the server from anywhere except localhost. Running a simple
> > > > "systemctl restart postgresql" fixes the problem and allows me to
> > > > connect from anywhere on my LAN. Here is an example of this
> > > > behavior:
> [...]
> > > >
> > > > So the first connection attempt fails. But when I restart the
> > > > service and try again (doing nothing else in between), the
> > > > connection attempt succeeds. My workaround has been to simply
> > > > restart the service every time my machine reboots, but I'd really
> > > > like to have a more reliable startup.
> > > >
> > > > Any ideas how to start hunting down the root cause? I think this
> > > > started happening after I moved the data directory to another
> drive.
> > >
> > > I would start by looking in the system log to see what it
> records when
> > > the service tries to start on reboot.
> >
> > Hit send to soon. At a guess the Postgres service is starting
> before the
> > drive is mounted.
>
> I don't think this has anything to do with the drive. If the drive
> wasn't mounted he couldn't connect from localhost either.
>
> What is probably happening is that postgresql is configured to listen on
> localhost and the IP address of the ethernet interface and is starting
> before the etherned interface is ready. So it is listening only on
> localhost (there should be an error message regarding the other address
> in the log). When he restarts postgresql some time later, the interface
> is ready.
>
> It should be possible to solve this by adding the right dependencies
> to systemd.
>
>
> I actually think the problem was both of these. The postgresql.conf
> file was on the non-root drive that probably wasn't mounted before
> postgresql started up -- I think the "default" listen_addresses when no
> conf file is available is just "localhost". To fix this, I added
Without a conf file the server will not start(the ok notwithstanding):
sudo /etc/init.d/postgresql12 start
Starting PostgreSQL: ok
postmaster: could not access the server configuration file
"/usr/local/pgsql12/data/postgresql.conf": No such file or directory
ps ax | grep postmaster
Returns nothing
Whereas with conf file:
sudo /etc/init.d/postgresql12 start
Starting PostgreSQL: ok
--2020-02-17 08:35:05.026 PST-0LOG: starting PostgreSQL 12.1 on
x86_64-pc-linux-gnu, compiled by gcc (SUSE Linux) 7.4.1 20190905
[gcc-7-branch revision 275407], 64-bit
--2020-02-17 08:35:05.026 PST-0LOG: listening on IPv4 address
"0.0.0.0", port 5432
--2020-02-17 08:35:05.026 PST-0LOG: listening on IPv6 address "::",
port 5432
--2020-02-17 08:35:05.075 PST-0LOG: listening on Unix socket
"/tmp/.s.PGSQL.5432"
--2020-02-17 08:35:05.131 PST-0LOG: redirecting log output to logging
collector process
--2020-02-17 08:35:05.131 PST-0HINT: Future log output will appear in
directory "pg_log".
ps ax | grep postmaster
/usr/local/pgsql12/bin/postmaster -D /usr/local/pgsql12/data
> "After=home.mount" to the postgresql systemd service. Once I did that,
> I started seeing the error message regarding the other address in the
> log, so I suspected exactly what you mentioned here.
What is the actual error message?
>
> I then added "network.target", "networking.service", and
> "network-online.target" to the After line of the postgresql.service
> systemd file, but it still didn't fix the problem. I ultimately had to
> change listen_addresses from "localhost,192.168.1.3" to "*". It's
> certainly not my favorite approach as the former is stricter and
> therefore more secure. But I don't have port forwarding set up for the
> postgres port, so my router should serve as a suitable firewall for my
> small-scale home database setup.
You can also use pg_hba.conf to restrict access:
https://www.postgresql.org/docs/11/auth-pg-hba-conf.html
>
> Thanks,
> Jason
>
> --
> Jason M. Swails
--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2020-02-17 16:46:05 | Re: Cases where alter table set type varchar(longer length) still needs table rewrite |
Previous Message | Jeremy Schneider | 2020-02-17 16:23:02 | Re: PL/pgSQL question about EXCEPTION clause & corrupt records |