在尝试使用PostgreSQL和Psycopg2时,我遇到了一个奇怪的情况。出于某种原因,每次我尝试通过python连接到postgre数据库时,都会出现以下错误:
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
当然,我检查了pg_hba.conf以查看问题所在,但就我所见,所有内容似乎都配置正确:
的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
另外,我发现我可以通过psql连接数据库,如我所料:
$ psql -U steve -h 127.0.0.1
...
steve=>
任何人都对这里发生的事情有任何想法?提前谢谢!
答案 0 :(得分:11)
典型解释包括:
您正在连接错误的服务器 DB服务器是否与Python在同一主机上运行?
你有错误的端口
如果发现连接尝试,请检查服务器日志。当然,您必须记录连接。请参阅config parameter log_connections
。
更改pg_hba.conf
后,您没有重新加载(SIGHUP)服务器 - 或重新加载错误的群集(如果您有多个数据库群集)。
在Debian及其派生词上使用pg_ctl
或pg_ctlcluser
。
答案 1 :(得分:0)
我最近遇到了同样的问题,我找到了解决这个问题的方法。
系统:
python
,django
,psycopg2
和postgres client 9.6.1
(postgresql-9.6.1.tar.gz
)),例如{{1 (私人地址)。ip address 10.0.0.1
”或任何数据库IP地址。错误:强>
aws_rds_host_name
django.db.utils.OperationalError: FATAL: no pg_hba.conf entry for host
<强>解决方案:强>
在应用服务器"10.0.0.1", user "your_user", database "your_db", SSL off
中安装postgres client 9.6.1
源包时,我们必须传递参数“10.0.0.1
”。我建议删除现有的--with-openssl
并安装以下步骤。
postgres client
(postgres client source package 9.6.1
)postgresql-9.6.1.tar.gz
。postgresql-9.6.1.tar.gz
参数对于消除该错误非常重要)./configure --prefix="your_preferred_postgres_path_if_needed" --with-openssl (this '--with-openssl'
运行django项目时未发生该错误。我希望这个解决方案有助于某人。