45

I have a database server (192.168.1.50) running postgres. I have created a database named "testdb" and a user "testuser" with password "testuserpw".
Locally, I can connect to the db using:

psql -d testdb -U testuser

When I issue the command from another host (192.168.1.60):

psql -h 192.168.1.50 -d testdb -U testuser

I have the error:

psql: could not connect to server: Connection refused
Is the server running on host "192.168.1.50" and accepting
TCP/IP connections on port 5432?

Any idea ?

0

7 Answers 7

66

Check the setting of listen_addresses in your postgresql.conf file. Many distributions make it default to 127.0.0.1, i.e. listen only to connections coming in from localhost. It should be set to '*' to listen for connections on all interfaces.

If you are still having trouble, use lsof to see what network sockets the postgres process is listening on.

Sign up to request clarification or add additional context in comments.

2 Comments

As a note, there is also a pg_hba.conf config file in which one can configure trust properties for specific machines.
For Postgres 9 the setting file will be in /var/lib/postgres/*. But for Postgres 11, this file can be found in /etc/postgresql/11/main/
6

On Ubuntu, I noticed that remote access at some point stopped working (currently using 9.1.9). The reason is, that postgres is no longer started with the -i switch [1] so no matter what you configure for listen_addresses, it will be ignored.

Fortunately, adding the following line to /etc/environment solves the problem after logging out and in again (or reboot):

PGOPTIONS="-i"

See [2] for more options. Note, that adding this to /etc/postgresql/9.1/main/environment did NOT work for me.

Now, when doing nmap ip-of-my-remote-server I finally get this again:

5432/tcp open  postgresql

Yay!

[1] http://www.postgresql.org/docs/9.1/static/runtime-config-short.html

[2] http://www.postgresql.org/docs/9.1/static/libpq-envars.html

2 Comments

I'm also running 9.1.9 on Ubuntu 13.04 and this step doesn't seem to be necessary.
I found I had to replace the double quotes with single quotes and it worked in the postgresql specific environment file just fine. Also, you have to actually use 'stop' and 'start' (as opposed to a simple reload) when you execute /etc/init.d/postgresql after making this change.
4

Is the firewall letting the connections through? Or, check if pg_hba.conf allows connecting from addresses other than localhost.

Comments

2

I came across the same problem as yours, and my source of problem is the firewall settings. If you're using Ubuntu, print your firewall status: sudo ufw status verbose

It may looks like this:

Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
...

The default rule of incoming connection is "deny", so you need to specify the "allow"ed port.

type: sudo ufw allow 5432/tcp

reference: https://www.vultr.com/docs/how-to-configure-ufw-firewall-on-ubuntu-14-04

1 Comment

Thanks for this. I wasn't even thinking in this direction.
1

The listen_address configvar in postgresql.conf is not the only way to get postgres to listen on the non-local IP-address (or addresses).

Use option "-o -h *" if you start postgres from pg_ctl, otherwise do add "-h" "*" to the postgres command line, like e.g.

/usr/local/pgsql/bin/postgres -D /pg/data "-h" "*" 

Of course /pg/data must be changed to your current datapath.

This is especially useful when experimenting.

Comments

1

I had the same problem with my Ubuntu 22.04, PostGreSQL 16 setup and got stuck for quite a while. Besides the other answers that concern the *.conf-files, I also had to configure the firewall with the commands below:

root# firewall-cmd --zone=public --add-port=5432/tcp --permanent
success
root# firewall-cmd --reload
success 

I found this on this webpage: https://www.project-open.com/en/howto-postgresql-port-secure-remote-access

I hope it helps and wish you (and everybody else concerned) 'good luck'!

Comments

0

Connection refused (0x0000274D/10061) i fixed here with:

Open the terminal and type:

VIM /var/lib/pgsql/data/postgresql.conf

Edit the "listen_adresses", it should be set to '*'

enter image description here

After this, rest it on terminal:

/scripts/restartsrv_postgres

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.