新手需要帮助理解Docker Postgres django.db.utils.OperationalError: FATAL: password authentication failed for user "postgres"

36 浏览
0 Comments

新手需要帮助理解Docker Postgres django.db.utils.OperationalError: FATAL: password authentication failed for user "postgres"

我是一个新手,正在尝试按照这个教程进行操作。我成功构建了Docker容器,但是遇到了错误django.db.utils.OperationalError: FATAL: password authentication failed for user "postgres"。我的问题是为什么在Python和Postgres容器的环境中显示正确的用户名和密码时,身份验证却失败了?我该如何解决这个问题?我还尝试查找pg_hba.conf文件(因为以前的答案建议编辑它),但是在我的环境中似乎不存在/etc/postgresql目录。以下是来自我的Python容器的信息:

这是我的Python容器。

这是我的Postgres容器。

跟踪信息。

Dockerfile。

docker-compose.yml。

settings.py。

postgres容器日志。

.env/.dev。

运行`docker version`的输出。

0
0 Comments

新手需要帮助理解Docker Postgres django.db.utils.OperationalError: FATAL: password authentication failed for user "postgres"问题的原因以及解决方法

最近,我在使用Docker时遇到了一个问题。我正在尝试在我的计算机上运行一个基于Docker的PostgreSQL数据库,并使用Django进行开发。然而,当我尝试连接到数据库时,我遇到了以下错误消息:django.db.utils.OperationalError: FATAL: password authentication failed for user "postgres"。

起初,我对这个错误感到困惑,因为我之前从未遇到过类似的问题。我确保在我的Docker配置文件中正确设置了数据库用户名和密码,并且使用了正确的连接字符串。然而,无论我如何尝试,我都无法成功连接到数据库。

我开始研究这个问题,并在各种论坛和开发社区中寻求帮助。经过一番探索,我发现了可能导致这个错误的几个原因。首先,这个错误可能是由于我在Docker容器中设置的密码与我在配置文件中设置的密码不匹配导致的。其次,这个错误可能是由于我没有正确配置Docker容器的网络设置导致的。最后,这个错误可能是由于我使用的数据库镜像版本与我的Django版本不兼容导致的。

为了解决这个问题,我首先检查了我的密码设置。我确保在Docker容器中使用的密码与我在配置文件中设置的密码完全一致。然后,我检查了Docker容器的网络设置,并确保它们与我的主机网络设置相匹配。最后,我更新了我的数据库镜像版本,以确保与我的Django版本兼容。

经过这些调整,我再次尝试连接到数据库,并且这次成功了!我终于能够在Docker容器中正常运行我的PostgreSQL数据库。

总之,当遇到Docker Postgres django.db.utils.OperationalError: FATAL: password authentication failed for user "postgres"错误时,可能的原因包括密码不匹配、网络设置错误或数据库与Django版本不兼容。为了解决这个问题,我们可以检查密码设置是否正确,检查网络设置是否匹配,并确保数据库镜像版本与Django版本兼容。

希望这篇文章能帮助到其他遇到相同问题的开发者!

0
0 Comments

在使用Docker容器设置Postgres时,如果密码设置错误,这些错误的设置将会持续存在。当我遇到这个错误时,我首先尝试的是销毁并重新创建卷。

使用-v命令执行如下操作:

docker-compose down -v

然后再重新启动。

在问问题之前,感谢你的建议。在尝试删除容器并重新构建后问题仍然存在。

是否有可能使用“postgres”作为用户名和数据库名称与现有默认值发生冲突?尝试将SQL_HOST和POSTGRES_USER设置为其他值,以及将POSTGRES_DB和SQL_DATABASE设置为其他值。

尝试了下面的设置但没有成功:(代码如下)

SQL_ENGINE=django.db.backends.postgresql 
SQL_DATABASE=postgresdb 
SQL_USER=useruser 
SQL_PASSWORD=password123 
SQL_HOST=pgdb 
SQL_PORT=5432 

pgdb:

image: postgres:13.2-alpine

restart: always

volumes:

- postgres_data:/var/lib/postgresql/data/

ports:

- 5432:5432

environment:

- POSTGRES_USER=useruser

- POSTGRES_PASSWORD=password123

- POSTGRES_DB=postgresdb

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

SQL_HOST更改为pgdb,除非你在docker-compose中也更改了它。除此之外,我不知道,但如果你愿意提供github链接,我很乐意查看代码。

我确实在docker-compose中更改了它以匹配。非常感谢你的帮助!这是链接github.com/Niqnil/blog

这个仓库工作得很好!你本地的Docker设置一定是造成问题的原因。你确定在关闭之前使用了-v标志吗?如果是这样,请尝试使用以下链接完全清除docker:stackoverflow.com/questions/34658836/…

是的,我刚刚尝试过。帖子已经达到了最大的字符数,不让我添加更多的内容。请参见pastebin.com/aDQXvvFw(停止和修剪)和pastebin.com/SgNGTiGi(相同的错误)。docker stop $(docker ps -aq)docker rm $(docker ps -aq)对我无效,所以我使用了docker system prune --volumes --all --force

在stackoverflow帖子的第二个答案中有一个名为armageddon()的函数。那是我以前用来完全清除Docker的方法。在此之后,尝试完全重新安装Docker和Compose。在此之后,我无法再提供更多帮助了。你的仓库可以正常工作,这是解决问题的关键所在;你只需要找出为什么你的Docker安装会出问题。

我知道了,但不知道如何运行armageddon()。我使用的是Windows 10上的Docker Desktop,它在命令提示符和PowerShell中都无法运行。在我这个新手的眼中,它看起来像是在Ubuntu中运行的东西?今天我尝试使用“清理/清除数据”和“恢复到出厂设置”进行了两次干净的Docker安装,但没有成功。

哦,对了,我不使用Windows,无法忍受它 🙂 对不起,伙计,我没有更多的想法了。也许尝试创建一个新的最基本的仓库,看看会发生什么。如果它工作了,尝试追踪原始仓库出现问题的位置。

我可以知道你的Docker版本和操作系统吗?我在forums.docker.com找到了一些信息,看看他们是否有任何想法。如果我能告诉他们该仓库在你的Docker中可以工作,我想这会有所帮助。我认为你关于问题是我的Docker安装或者可能是Windows问题的观点是正确的。我仍在尝试卸载和清洁安装Docker的方法。

Linux Ubuntu 20.04,Docker 20.10.6,docker-compose 1.27.4。还有,请看一下这个:github.com/johnckealy/djengu。这是我一个使用vagrant创建虚拟机的项目。看看你是否可以创建一个新的虚拟机,并在其中运行你的代码。

0
0 Comments

这个问题的出现原因是Docker的重启策略配置有误,具体与Docker的重启策略有关。根据配置中的restart: always,容器会在停止后总是重新启动。这可能导致容器的正确顺序发生扭曲。建议删除这行配置(对我的情况有效)。

这个解释是有道理的,但我无法测试它,因为我不再使用带有Windows操作系统的之前的计算机。在我的新计算机上使用Ubuntu 21.04时,即使配置了restart: always,也没有问题。不过,还是感谢你的帮助:)

0