问题
I've run into a weird situation while trying to use PostgreSQL and Psycopg2. For some reason, every time I attempt to connect to the postgre database via python, I get the following error:
psycopg2.OperationalError: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "steve", database "steve", SSL on
FATAL: no pg_hba.conf entry for host "127.0.0.1", user "steve", database "steve", SSL off
Naturally, I checked pg_hba.conf to see what the issue was, but everything appeared to be configured correctly as far as I can see:
pg_hba.conf:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
In addition, I've found that I can connect to the database via psql as I would expect:
$ psql -U steve -h 127.0.0.1
...
steve=>
Anyone have any ideas as to what could be going on here? Thanks in advance!
回答1:
Typical explanations include:
You are connecting to the wrong server.
Is the DB server running on the same host as Python does?You got the wrong port.
Check the server log if you see a connection attempt. You have to log connections for that, of course. See the config parameter log_connections.You did not reload (SIGHUP) the server after changing
pg_hba.conf
- or reloaded the wrong cluster (if you have multiple DB clusters).
Use pg_ctl orpg_ctlcluser
on Debian and derivatives for that.
回答2:
I recently got into this same issue and I found the solution for this problem.
System:
- I have an application server (with these packages installed
python
,django
,psycopg2
andpostgres client 9.6.1
(postgresql-9.6.1.tar.gz
)), for instanceip address 10.0.0.1
(a private address). - And AWS postgres RDS server "
aws_rds_host_name
" or any database IP address.
Error:
django.db.utils.OperationalError: FATAL: no pg_hba.conf entry for host
"10.0.0.1", user "your_user", database "your_db", SSL off
Solution:
While installing the postgres client 9.6.1
source package in application server 10.0.0.1
, we have to pass an argument "--with-openssl
". I suggest to remove the existing the postgres client
and install with below steps.
- Download the
postgres client source package 9.6.1
(postgresql-9.6.1.tar.gz
) - Untar the package
postgresql-9.6.1.tar.gz
. ./configure --prefix="your_preferred_postgres_path_if_needed" --with-openssl (this '--with-openssl'
argument is important to get rid of that error)- make
- make install
- After successful installation, that error didn't occur when we ran the django project with
psycopg2
.
I hope this solution helps someone.
来源:https://stackoverflow.com/questions/10693978/psycopg2-reporting-pg-hba-conf-error