Re: Cannot connect to postgresql-11 from another machine after boot

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Cannot connect to postgresql-11 from another machine after boot
Дата
Msg-id e8d76919-4ab3-3309-a40f-a056830c6c8d@aklaver.com
обсуждение исходный текст
Ответ на Re: Cannot connect to postgresql-11 from another machine after boot  (Jason Swails <jason.swails@gmail.com>)
Список 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@hjp.at 
> <mailto:hjp-pgsql@hjp.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.klaver@aklaver.com



В списке pgsql-general по дате отправления:

Предыдущее
От: Jeremy Schneider
Дата:
Сообщение: Re: PL/pgSQL question about EXCEPTION clause & corrupt records
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: Cases where alter table set type varchar(longer length) stillneeds table rewrite