繁体   English   中英

Django fe_sendauth:未提供密码错误,无法连接到 postgres 数据库

[英]Django fe_sendauth: no password supplied error, unable to connect to postgres database

我正在尝试使用 django 应用程序配置服务器,并将 postgresql 作为其后端。 当我尝试运行迁移时安装所需的包、数据库和环境后,出现以下错误

Traceback (most recent call last):
  File "/var/envs/traveldbapi/lib/python3.4/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
    self.connect()
  File "/var/envs/traveldbapi/lib/python3.4/site-packages/django/db/backends/base/base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/var/envs/traveldbapi/lib/python3.4/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/var/envs/traveldbapi/lib/python3.4/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: fe_sendauth: no password supplied


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/var/envs/traveldbapi/lib/python3.4/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
 ====
 ommitting some lines
 ====
    connection = Database.connect(**conn_params)
  File "/var/envs/traveldbapi/lib/python3.4/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: fe_sendauth: no password supplied

我确认存在 django 所需的相关DATABASE设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': 'localhost',
        'NAME': DATABASE_NAME,
        'USER': DATABASE_USER,
        'password': DATABASE_PASSWORD
    }
}

我不确定为什么会发生此错误,因为这与我在本地计算机上使用的设置相同,并且可以正常工作。 为了确认我的pg_hba.conf没有任何问题,我从全新安装开始。 配置没有以任何方式修改,应用程序用户对应用程序数据库具有所需的权限。

设置必须大写 - 尝试将其更改为'PASSWORD'

密钥名称'password'应该是大写的'PASSWORD' 另外,不是将密码定义为全局变量DATABASE_PASSWORD ,您可以使用 .bashrc 文件来保存安全信息,并且可以像os.environ['DATABASE_PASSWORD']一样在settings.py 中获取

使您的 HOST 变量为空

'HOST': '',

OperationalError: fe_sendauth: 没有提供密码

您应该将密码更改为大写的“PASSWORD”

在使用 Django 时,确保你有一个 .env 文件并正确配置你的 .postgres 和 .django envs esp 在你的 .postres 或 .env 文件中提供数据库 URL,如下所示:

DATABASE_URL=psql://postgres:yourpassword@127.0.0.1:5432/databasename
POSTGRES_HOST=*
POSTGRES_PORT=5432
POSTGRES_DB=tutor
POSTGRES_USER=postgres
POSTGRES_PASSWORD=yourpassword
DJANGO_ALLOWED_HOSTS=['.herokuapp.com', 'localhost', '127.0.0.1', '[::1]', '0.0.0.0']
# DJANGO_DEBUG=False # disable debugging on production
DJANGO_DEBUG=False # disable debugging if hosts list is not empty

有关环境变量的更多信息,请参阅:# .env using django-environ

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM