peewee 连接 docker-mysql 失败

8 浏览
0 Comments

peewee 连接 docker-mysql 失败

我正在尝试从Docker镜像连接到MySQL数据库,但是遇到了错误。我使用的是以下Docker镜像:https://hub.docker.com/_/mysql/。以下是我用于运行Docker镜像的命令:docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8。以下是docker ps命令的输出结果:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                              NAMES
9f35d2e39476        mysql:8             "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        0.0.0.0:3306->3306/tcp

。如果我使用docker inspect命令检查IP并ping该IP,显示IP不可达。如果我尝试使用localhost127.0.0.1连接,我会收到以下错误:

无法加载身份验证插件'caching_sha2_password'。

0
0 Comments

使用非稳定的软件时,请注意可能存在版本之间的重大更改和意外行为。

首先,请注意,该软件已不再开发,稳定版本于2018年4月19日发布。

其次,您无法直接ping通您的容器,因为它在另一个网络中,但您可以轻松地使用另一个容器来ping通它。

mysql 8默认使用作为身份验证插件,而不是。更多信息请参见这里

许多mysql驱动程序尚未添加对的支持。

如果您遇到问题,可以使用类似以下内容的命令将其更改为旧的身份验证插件:

docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8 mysqld --default-authentication-plugin=mysql_native_password

感谢,我将版本更改为5,问题得到解决。

--default-authentication-plugin参数对我帮助很大,因为我默认安装了sha 256,并尝试稍后更改,导致我通过mysqlshel无法访问容器。谢谢。

0
0 Comments

问题出现的原因:当使用docker-compose启动时,MySQL密码/认证机制更新导致连接失败。

解决方法:在启动MySQL时,恢复到旧的MySQL密码/认证机制。

具体的解决方法如下:

1. 在docker-compose文件中找到“services”部分。

2. 在“services”中找到“db”服务,并添加以下内容:

services:

db:

image: mysql

command: mysqld --default-authentication-plugin=mysql_native_password

restart: always

environment:

MYSQL_ROOT_PASSWORD: example

3. 保存文件并重新启动docker-compose。

这个解决方法适用于docker环境中使用peewee连接MySQL时出现连接失败的情况。

0
0 Comments

在使用Docker容器运行mysql 8.X时,我遇到了相同的问题。我首先登录到容器中,然后以root身份登录到mysql。最后,运行ALTER USER命令来更改用户的身份验证方式。这样做后,问题得以解决。

然而,每次容器重新启动时,我都需要重新执行这些步骤。我想知道是否有办法使这些更改永久生效。有人建议可以编写一个在容器启动或重新启动时运行的脚本来实现这一点。

非常感谢这位朋友的建议,这对我非常有效。在mac环境下,这个方法适用。

总结起来,问题的原因是因为使用Docker容器运行mysql 8.X时,身份验证方式可能会出现问题。解决方法是通过在容器中执行ALTER USER命令来更改用户的身份验证方式。如果希望更改永久生效,可以编写一个在容器启动或重新启动时运行的脚本。

希望这篇文章能帮助到遇到类似问题的人们。

0