Docker搞乱了当地的django / postgres项目。无法在localhost上运行项目

时间:2017-02-20 22:33:36

标签: django postgresql

我在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': '',
    }
}

1 个答案:

答案 0 :(得分:0)

我假设您的django只想连接到名为closerdb的数据库。在这种情况下,相应的pg_hba.conf条目应如下所示:

host    closerdb     postgres        172.17.0.1              trust

来自postgresql docs

  

值复制指定在请求复制连接时记录匹配(请注意,复制连接不指定任何特定数据库)。否则,这是特定PostgreSQL数据库的名称

我还想指出,您应该根据您的环境谨慎使用trust,因为:

  

无条件地允许连接。此方法允许任何可以连接到PostgreSQL数据库服务器的人以他们希望的任何PostgreSQL用户身份登录,而无需密码或任何其他身份验证。