HiveBrain v1.2.0
Get Started
← Back to all entries
patternsqlMinor

Connecting to an external database with pgAdmin III

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
pgadminwithconnectingdatabaseexternaliii

Problem

I'm trying to connect to an external database from pgAdmin III (which is installed on both machines).
The client complains:

Access to database denied


The server doesn't grant access to the database: the server reports

FATAL: no pg_hba.conf entry for host "192.168.108.161",
                                user "postgres",
                            database "postgres",
                                 SSL off




To access a database on a PostgreSQL server, you first have to grant primary access to the server for your client (Host Based Authentication).
PostgreSQL will check the pg_hba.conf file if a pattern that matches your client address / username / database is present and enabled before any SQL GRANT access control lists are evaluated.


The initial settings in pg_hba.conf are quite restrictive, in order to avoid unwanted security holes caused by unreviewed but mandatory system settings.
You'll probably want to add something like

host all all 192.168.0.0/24 md5




This example grants MD5 encrypted password access to all databases to all users on the private network 192.168.0.0/24.
You can use the pg_hba.conf editor that is built into pgAdmin III to edit the pg_hba.conf configuration file.


After changing pg_hba.conf, you need to trigger a server configuration reload using pg_ctl or by stopping and restarting the server process.

Where the server explicitly states that all connections from the internal network are accepted.

pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
host    all             all             192.168.0.0/24          md5


I have already restarted the postmaster for the changes to ta

Solution

This line:

host all all 192.168.0.0/24 md5

will let through connections from IPs matching 192.168.0.X where X is any byte.

The IP address of your error message being 192.168.108.161, it does not match this pattern because 108 is not 0.

To enable addresses like 192.168.X.Y, you'd need a /16 instead of /24 meaning that the first 16 bits only are fixed.

Like this:

host all all 192.168.0.0/16 md5

Don't forget to reload Postgresql. From the official docs, use pg_ctl reload. If that doesn't work, then there are other ways to do it listed in this question.

Context

StackExchange Database Administrators Q#48152, answer score: 7

Revisions (0)

No revisions yet.