我在postgresql / django问题上存货。尝试运行localhost服务器后出现以下错误
django.db.utils.OperationalError: FATAL: no pg_hba.conf entry for host "172.17.0.1", database "closerdb", SSL off
根据许多类似的问题和答案pg_hba.conf的最后几行看起来像这样:
host all all 0.0.0.0/0 md5
local replication postgres trust
host replication postgres 127.0.0.1/32 trust
host replication postgres 172.17.0.1 trust
host replication postgres ::1/128 trust
我在编辑.conf文件后重新启动了postgres,但错误仍然存在。我认为它是由docker安装引起的,因为通常django项目必须在loclahost(127.0.0.1)上运行,而172.17.0.1是默认的docker ip。
如何解决所有问题并在将来避免此类问题?
编辑:django数据库设置。之前在安装docker之前工作正常:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'closerdb',
# 'HOST': '/tmp/mysql.sock',
# 'PORT': '8000',
# 'HOSTNAME': '',
'USER': 'thekotik',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
}
}
答案 0 :(得分:0)
我假设您的django只想连接到名为closerdb
的数据库。在这种情况下,相应的pg_hba.conf
条目应如下所示:
host closerdb postgres 172.17.0.1 trust
值复制指定在请求复制连接时记录匹配(请注意,复制连接不指定任何特定数据库)。否则,这是特定PostgreSQL数据库的名称
我还想指出,您应该根据您的环境谨慎使用trust
,因为:
无条件地允许连接。此方法允许任何可以连接到PostgreSQL数据库服务器的人以他们希望的任何PostgreSQL用户身份登录,而无需密码或任何其他身份验证。