我有一个带有“db”和“web”容器的docker-compose。db是一个mysql:8.0
图像,而web是一个python:3.9-slim
。
如果我尝试连接到 db 容器内的 MySQL 服务器,它可以工作。但是如果我在 Web 容器内尝试则不行,从这里我得到以下错误:
root@c08888899ca9:/local/app# mysql -h db -u root -p123qwe
ERROR 2061 (HY000): RSA Encryption not supported - caching_sha2_password plugin was built with GnuTLS support
mysql 客户端在不同的容器之间有所不同:db 客户端使用 community-mysql 客户端:
mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
而 Web 容器客户端使用mariadb 客户端:
mysql Ver 15.1 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64)
并且,服务器版本是:
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.28 |
+-----------+
关于如何解决“caching_sha2_password plugin”错误的任何想法
非常感谢
答案1
可能的解决方案包括:
- 配置数据库服务器以使其工作不使用 SSL:删除
*.pem
、ssl=0
设置my.ini
或my.cf
- 使用 OpenSSL 而不是 GnuTLS 重建客户端(我认为它有一个选择 SSL 后端的选项,并且此功能仅支持 OpenSSL。)
- 更改其中一个容器以匹配另一个:让它们都使用 MySQL 或 MariaDB 构建并具有兼容的配置。有许多不同的现成 MySQL 容器以及 Web 服务器容器,选择可以协同工作的容器应该没有问题。