我正在尝试从 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 不可访问。
docker inspect 9f35d2e39476 | grep -i ipaddress
如果我尝试使用 localhost
和 127.0.0.1
进行连接,我会收到以下错误。
无法加载身份验证插件“caching_sha2_password”。
原文由 Gaurang Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,请注意您使用的是不稳定的软件,因此版本和意外行为之间可能会有重大变化。
编辑:不再开发,稳定版于 2018 年 4 月 19 日推出
其次,您不能直接ping您的容器,它在其他网络中,但是您可以轻松地使用另一个容器来ping他。
mysql 8 使用
caching_sha2_password
作为默认身份验证插件,而不是mysql_native_password
。 更多信息在这里。许多 mysql 驱动程序还没有添加对
caching_sha2_password
的支持。如果您遇到问题,可以使用以下内容更改为旧的身份验证插件:
docker run -p 3306:3306 --name mysql_80 -e MYSQL_ROOT_PASSWORD=password -d mysql:8 mysqld --default-authentication-plugin=mysql_native_password