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

31

我从Github克隆了一个仓库并正在对其进行操作。该项目基于Django框架,使用PostgreSQL作为数据库。此项目现在已上线,我需要对其进行一些更改。数据库规格如下:

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

我已经搜索了这个问题,但是找不到能帮助我的解决方案。有人能告诉我问题出在哪里吗?


你是否已经创建了带有项目名称和“admin”用户的数据库?你确定密码不是必需的吗? - rishabsaraf93
是的,我尝试在PgAdminIII中创建数据库,但它也会出现相同的错误。 - the_unknown_spirit
2
你的数据库好像出了一些问题,可以尝试在终端中输入以下命令:psql -U postgres,接着输入create database project_name;。如果操作成功,就把设置里的用户改为postgres。 - rishabsaraf93
你最终搞定了吗? - David Schumann
5个回答

33
如果您想使用本地无密码连接,则需要删除“HOST”、“PORT”和“PASSWORD”值。
使用此配置,您的连接器将尝试使用Unix域套接字进行连接,这是Postgres默认允许的唯一无密码连接。

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

10

我可以想到两种可能的解决方法。

首先,如果数据库没有密码,删除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',
    }
}

1
也许是个愚蠢的问题,但对我来说,问题在于Postgres实际上没有运行。因此,请确保它正在运行。
在Linux中:
sudo service postgresql status

0

创建新数据库 打开pgAdmin,左键单击Servers,然后右键单击PostgreSQL--->Create--->Database。填写数据库名称字段,比如说SCHOOL,然后保存。

注册服务器 右键单击Servers,然后选择Register-->Server,填写Name字段为您喜欢的任何名称,例如admin。转到连接,将Hostname/address字段填写为localhost127.0.0.1,填写密码字段,比如说1234并保存密码,其他字段保持不变。 图像可能暂时无法使用

最后,您的代码片段将如下所示;

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'SCHOOL',
    'USER': 'postgres',
    'PASSWORD': '1234',
    'HOST': 'localhost',
    'PORT': '5432',
}

}


0
这是我现在遇到的问题, 我发现是数据库版本的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接