我用django创建了一个blog应用程序,并将其附加到存储在本地计算机(localhost)上的mysql数据库中,我通过phpmyadmin管理该数据库。
不过,我改用了ubuntu18.04lts(以前在windows机器上),想用docker容器部署我的应用程序。我想在一个容器中运行mysql数据库,在另一个容器中运行我的博客应用程序,并让它们相互通信(我使用docker compose来实现这一点)。
以下是我应用程序上的数据库字典:
这是docker-compose.yml文件。
在启动docker compose up命令后,出现以下错误:
它说“(2006,“身份验证插件'caching\u sha2\u password'cannot be loaded:dlopen(/usr/local/mysql/lib/plugin/caching\u sha2\u password.so:cannot open shared object file:no such file or diectory”)”。
1条答案
按热度按时间arknldoa1#
在db容器中,您只需要设置
root
用户但使用test
用户。所以你要么MYSQL_PASSWORD
环境变量或使用root
用户。关于mysql docker hub docs中env变量的更多信息
我的建议是将db服务定义更改为
这使得不使用root用户成为可能,这被认为是最佳实践。
真正可能导致这种错误的原因是您的mysql版本错误。在mysql docker hub上,您可以看到
latest
tag(如果不提供任何,则with是隐式标记)与8.0
. 但很多应用程序只与旧版本兼容5.7
. 要切换此项,请在docker compose add中5.7
标签:(5.7和8.0实际上只是一个主要版本,8.0是在2017年发布的)