django.db.utils.OperationalError:fe_sendauth:未提供密码

Posted

技术标签:

【中文标题】django.db.utils.OperationalError:fe_sendauth:未提供密码【英文标题】:django.db.utils.OperationalError: fe_sendauth: no password supplied 【发布时间】:2016-07-12 20:47:36 【问题描述】:

我已经从 github 克隆了一个 repo 并正在处理它。该项目在 django 中并使用 postgres 作为数据库。这个项目现在处于生产端,我需要对其进行一些更改。数据库规格是:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        # Or path to database file if using sqlite3.
        'NAME': 'project_name',
        'USER': 'admin',
        'PASSWORD': '',
        # Empty for localhost through domain sockets or           '127.0.0.1'
        # for localhost through TCP.
        'HOST': 'localhost',
        'PORT': '5432',
    

我想在我的本地主机上运行它,但我不能。我收到错误:

django.db.utils.OperationalError: fe_sendauth: no password supplied

我已经搜索过这个问题,但找不到可以帮助我的解决方案。谁能告诉我问题出在哪里?

【问题讨论】:

您是否使用 project_name 和 'admin' 用户创建了数据库。你确定不需要密码吗? 是的,我尝试在 PgAdminIII 中创建数据库,但也出现了同样的错误。 您的数据库似乎有问题。为什么不在终端psql -U postgres 中尝试以下命令,然后是create database project_name;。如果可行,请将设置中的用户更改为 postgres 你最后搞定了吗? 【参考方案1】:

也许是一件愚蠢的事情。但对我来说,问题是 postgres 实际上并没有运行。所以要经常检查它是否在运行。

在 Linux 中:

sudo service postgresql status

【讨论】:

【参考方案2】:

我可以想到两种可能的解决方案来解决这个问题。

首先,如果数据库没有密码,去掉PASSWORD键。例如:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'project_name',
        'USER': 'admin',
        'HOST': 'localhost',
        'PORT': '5432',
    

其次,如果有数据库的密码,在PASSWORD键中提供:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'project_name',
        'USER': 'admin',
        'PASSWORD': '<YOUR PASSWORD HERE...>',
        'HOST': 'localhost',
        'PORT': '5432',
    

【讨论】:

【参考方案3】:

如果您想使用本地无密码连接,则需要删除值“HOST”、“PORT”和“PASSWORD”。

使用此配置,您的连接器将尝试使用 unix 域套接字进行连接,这是 Postgres 默认情况下唯一允许的无密码连接

【讨论】:

尝试将登录名改为postgres而不是admin 我应该在哪里做?? 在你的 settings.py 中,尝试 'user': 'postgres' 这对我来说已经很接近了,在查看了 settings.py ('PASSWORD': os.getenv('DATABASE_PASSWORD'),) 之后,我意识到我没有在这个新 shell 中激活环境变量。

以上是关于django.db.utils.OperationalError:fe_sendauth:未提供密码的主要内容,如果未能解决你的问题,请参考以下文章