Managing incoming connections at the role level
When a new connection is established to a cluster, PostgreSQL validates the incoming request at the role level. The fact that the role has the LOGIN
property is not enough for it to open a new connection to any database within the cluster. This is because PostgreSQL checks the incoming connection request against a kind of firewall table, formerly known as host-based access, that is defined within the pg_hba.conf
file.
If the table states that the role can open the connection to the specified database, the connection is granted (assuming it has the LOGIN
property); otherwise, it is rejected.
Every time you modify the pg_hba.conf
file, you need to instruct the cluster to reload the new rules via a HUP
signal or by means of a reload
command in pg_ctl
.
Therefore, the usual workflow when dealing with pg_hba.conf
is similar to the following:
$ $EDITOR $PGDATA/pg_hba.conf
... modify the file as you wish ...
$ sudo -u postgres...