django postgresql密码验证用户失败

时间:2015-09-19 04:46:01

标签: django postgresql docker

TL; DR管理迁移失败但管理dbshel​​l工作正常。

这是OSX10.6上的dockerized dev环境,带有django 1.8.4和postgresql 9.4.4的boot2docker。

/manage.py migrate throws:

django.db.utils.OperationalError: FATAL:  password authentication failed for user "xxxxx"

但是这里让我困惑的是,django dbshel​​l工作,将密码复制并粘贴到环境变量中

root@df6501ab7341:/src/web# ./manage.py dbshell
Password for user xxxxx: 
psql (9.4.4)
Type "help" for help.

xxxxx=# \du
                               List of roles
  Role name   |                   Attributes                   | Member of 
--------------+------------------------------------------------+-----------
 xxxxx      | Superuser                                     +| {}
              | Password valid until infinity                  | 
 mpasysuser01 |                                                | {}
 postgres     | Superuser, Create role, Create DB, Replication | {}

xxxxx=# 

Django设置为:

# Database Configuration
DATABASES = {
    'default': {
        'ENGINE'   : 'django.db.backends.postgresql_psycopg2',
        'NAME'     : os.environ.get('DATABASE_ENV_POSTGRES_USER'    , ''),  # the database name is the same as the dbo username
        #ToDo Use unprivileged database user
        # 'USER'     : os.environ.get('DATABASE_ENV_UNPRIVILEGED_SQL_USER', ''),
        'USER'     : os.environ.get('DATABASE_ENV_POSTGRES_USER', ''),
        'PASSWORD' : os.environ.get('DATABASE_ENV_POSTGRES_PASSWORD', ''),
        'HOST'     : os.environ.get('DATABASE_PORT_5432_TCP_ADDR'   , ''),
        'PORT'     : os.environ.get('DATABASE_PORT_5432_TCP_PORT'   , ''),
    },
}

,数据库日志显示:

database_1 | FATAL:  password authentication failed for user "xxxxx"
database_1 | DETAIL:  Connection matched pg_hba.conf line 95: "host all all 0.0.0.0/0 md5"

1 个答案:

答案 0 :(得分:3)

我赞同@larconda所说的话。

我绞尽脑汁,决定打印:

  1. 打开外壳

  2. 导入操作系统

  3. 打印(此处为您的变量)

这应该提供一些输入-事实证明这对我来说是一个缺失的空间。